Electron 介绍(理论篇)

  Electron 是一个能让你使用前端技术(JavaScript, HTML, CSS 和 Node.js)构建跨平台的桌面应用的框架。最初被 GitHub 开发,2013 年 4 月 11 日以 Atom Shell 为名起步,2014 年 5 月 16 日开源,2015 年 4 月 17 日改名为 Electron。

基于 Electron 实现的产品

  VS Code, Atom 等。

Electron 组成

  Electron 主要由 Node.js、Chromium 和封装好的系统 API 三大部分组成。

  在 Electron 构建的程序里,Chromium 负责页面渲染进程,Node.js 负责程序的逻辑部分,开发中可以使用所有 Node.js 的原生 API,也可以使用 npm 平台上的所有模块。使用 Electron 的 API 可以实现如通知、自定义 Windows 任务栏/macOS Dock、最近文档等操作系统原生功能。

Electron 进程

  Electron 有两种进程,分别是主进程和渲染进程。

  主进程只能有一个,负责调用 Electron 的 API 实现系统功能,控制应用的生命周期,创建单独的渲染进程来加载 web 页面等。

  每个单独的 web 页面都运行在属于它自己的渲染进程中,是相互独立的。这意味着某一个渲染进程崩溃了,并不会影响到其它的渲染进程。渲染进程负责渲染页面和处理相应的页面交互。有一点需要注意的是,渲染进程并不能直接调用与 GUI 相关的原生 API (比如操作系统菜单、创建新窗口等),因为渲染进程等于是使用的 Chromium 来展示 web 页面,在 web 页面中,直接操作原生的 GUI 资源是非常危险的,而且容易造成资源泄露。如果想要在渲染进程内使用 GUI 操作,可以与主进程产生通讯,请求主进程调用相应的 API 来操作。

Electron 优缺点

优点:

  • 快速构建跨平台(Windows、macOS、Linux)的桌面级应用

  • 因为使用 Node.js 开发,所以 npm 平台下的包都可以使用,提升开发效率,避免重复造轮子

  • 有很多现成的 UI 框架可以使用

缺点:

  • 安装包体积略大(打包了 Chromium)

  • 性能不如原生应用