跨平台技术实战百度文库跨平台技术快速落

导读:本文简述了PC客户端业务在文库中快速落地的过程,其中包括了前期的技术选型,方案设计,PC客户端跨平台原理,以及Electron框架的应用细节。从应用深入到原理,讲解PC客户端跨平台技术,如何实现跨平台渲染,如何实现原生API的调用,和如何进行不同目标平台的应用构建。通过阅读本文,可以快速上手基于Electron框架进行PC客户端业务的开发。全文字,预计阅读时间7分钟前言跨平台技术在移动客户端平台(AndroidiOS)上已经发展了多年,从HybridApp到小程序,再到ReactNative和Flutter已经得到比较广泛的应用。无论是前端方案,桥接方案,还是自渲染方案,都需要解决三个问题:如何进行UI渲染?如何实现原生API的调用?如何进行客户端构建?不同的移动客户端跨平台方案都有自己的解决方式,但是在PC客户端平台上,大部分传统应用软件还是以单平台开发为主。近期文库业务开始启动PC客户端的项目,同时支持Windows平台和MacOS平台,从技术的角度希望通过PC客户端的跨平台技术,以更低的成本,更高效的迭代来适应互联网产品的节奏,同时保证不同平台下的一致性体验。本文通过PC客户端跨平台框架的分析及跨平台业务应用进行展开。一、技术选型文库的PC客户端主要涉及到桌面OS的Windows和MacOS,当前这两种平台的应用软件开发包括了单平台开发、中间平台开发、跨平台开发几种模式,其中根据目前文库业务研发人员结构和熟悉程度,Flutter和Electron是重点去考察的PC客户端跨平台框架。因为文库在文档页面渲染上的技术积累,可以快速复用到业务场景中,所以最终选择了Electron跨平台技术方案。二、Electron框架介绍接下来,介绍一下Electron框架到底是什么?如何实现跨平台的?其实要回到开篇提到的跨平台需要解决的通用问题,UI渲染、原生API、客户端构建。Electron是通过集成浏览器内核,通过前端的技术来实现不同平台下的渲染,Electron框架主要解决以下问题:渲染与服务的融合,即UI和底层服务的融合;不同平台下系统API的调用及封装;不同平台下应用构建;理解Electron框架原理,其难点在于Chromium和Node.js是如何互通的,因为我们知道他们都有自己独立的事件循环,不解决这个问题就无法实现渲染和服务的融合,所以需要先了解Electron的多进程架构。2.1Electron多进程架构Electron多进程架构参考了Chromium的多进程架构,即将渲染进程与主进程隔离,之所以如此设计是因为与OS从单用户到多任务的发展过程类似,为避免一个出错的页面或插件bug引起整个浏览器和全部标签关闭。每个浏览器标签使用独立的进程,保护整个应用免受渲染进程中Bug和故障影响。在实际业务中,UI都是在渲染进程进行的,当需要使用系统服务时如I/O、DB、Push等等,通过IPC方式在主进程中实现,Electron框架本身已提供了IPC能力,包括ipcMain和ipcRenderer,具体使用可以查询Electron官方文档,有比较详细的说明和应用示例。2.2Chromium与Node.js融合把Chromium和Node.js两套独立的体系进行通信是Electron重点解决的问题之一,根据官方发布的相关介绍,首先尝试了用libuv来替换Chromium的messageloop,每个平台都有自己的GUI消息循环,实现过程相对复杂,最终因为资源消耗和延迟的问题无法得到有效解决,所以放弃了。目前Electron框架通过在一个单独的线程中轮询Node的事件循环的方式来实现Chromium与Node.js融合。具体实现可以查看框架源码,本文不进行展开说明。

Node_bindings.cc源码源码


转载请注明:http://www.aierlanlan.com/rzdk/8193.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了