2019 桌面软件开发指北(一) 关于 Electron
Desktop Development and Electron
大概十年前 Palm webOS
发布的时候,有一种看法认为未来的移动端软件和桌面软件将被 Web 取代。
彼时 Chromium
未满周岁,Node.js
在娘胎里即将出世。
十年间,前者借 Google 之力一统浏览器江山,后者则颠覆了所有前端开发的工程实践。
这两者的结合则是一个划时代的跨平台的桌面软件开发新方式 - Electron
。
十年预言成为现实。
我们不讨论原生开发。在足够的功能支持和优越的开发效率面前,大多数应用场景真的没必要再讨论是否原生开发。
关于 Electron
Electron
整合了 Node.js
和 Chromium
。
它能够充分利用 Node.js
丰富的软件仓库,并使用 Chromium
的渲染引擎部分,同时保持小巧和可维护。
Electron 应用结构
Electron
程序有两类进程。
程序入口是一个 JavaScript
脚本,称为 主进程
。
开发者可以在主进程中用脚本创建页面展示用户界面。
用户界面其实是使用 HTML
/CSS
/JavaScript
等标准 web 技术开发的页面,运行在 渲染进程
中,由 Chromium
渲染。
主进程能够调用所有的系统原生 API,而渲染进程则只能调用标准的 Web API。 (早期版本中渲染进程可以直接访问很多系统原生 API,为了安全考虑,新版本默认禁止渲染进程直接访问系统原生 API)
进程间通信
主进程与渲染进程之间可以通过 ipcRenderer
/ipcMain
发送消息,或者使用 electron.remote
模块进行 IPC 通信。
渲染进程之间则可以使用 localStorage
/sessionStorage
/IndexedDB
等方式共享数据。
文件结构
运行一个最基本的 Electron
项目只需要 3 个文件,如下:
myapp/
├── package.json
├── index.js // <<--- 程序的入口
└── index.html // <<--- 用户界面
其中,index.js
包含了软件生命周期的主要逻辑,如窗口管理,菜单栏管理等。
我们可以决定采用什么方式来创建软件的窗口,如窗口尺寸、是否全屏、透明度等。
index.html
用于定义窗口范围内的程序界面。
采用标准的 HTML 技术,可以轻松控制文本、图片、按钮、表单的样式和行为。
也可以在页面中引入 JavaScript
和 CSS
文件,正如在浏览器中编程一样。
后续
2019 桌面软件开发指北(二) Electron 快速上手 - Hello World!
2019 桌面软件开发指北(三) Electron 项目管理
2019 桌面软件开发指北(四) Electron 与 Vue.js
参考: