词汇表

这篇文档解释了一些经常在 Electron 开发中使用的专业术语。

ASAR

ASAR 表示 Atom Shell Archive Format。 一个 asar 档案就是一个简单的 tar 文件 - 比如将那些有关联的文件放至一个单独的文件格式中。 Electron 能够任意读取其中的文件并且不需要解压整个文件。

ASAR格式是为了在Windows系统读取大量的小文件时 (比如像从node_modules加载应用的JavaScript依赖关系树) 提高性能。

code signing(代码签名)

代码签名是一个过程,其中应用开发人员对其代码进行数字签名以 确保代码在打包后未被篡改。 Windows 和 macOS 都实现了自己的代码签名版本。 作为桌面应用开发人员, 如果您计划将代码分发给 公众,则必须对代码进行签名。

有关详细信息,请阅读 代码签名 教程。

context isolation(上下文隔离)

上下文隔离是 Electron 中的一项安全措施,可确保 预加载脚本不会将拥有优先权的 Electron 或 Node.js API 泄漏到 Web 渲染器进程中的内容。 启用上下文隔离后,从预加载脚本公开 API 的唯 方法是通过 contextBridge API。

有关详细信息,请阅读 上下文隔离 教程。

另请参阅: 预加载脚本渲染器进程

CRT

C 运行时库 (CRT) 是包含了 ISO C99 标准库的 C++ 标准库的一部分。 实现了 CRT 的 Visual C++ 库支持本机代码开发, 以及混合的本机和托管代码, 以及用于 .NET 开发的纯托管代码。

DMG

是指在 macOS 上使用的苹果系统的磁盘镜像打包格式。 DMG 文件通常被用来分发应用的 “installers”。

IME

输入法编辑器. 是一个允许用户输入在键盘上找不到的字符和符号的程序。 例如,使用户可以用拉丁语键盘输入中文,日文,韩文和印度文字。

IDL

接口描述语言(Interface Description Language)。 撰写函数签名与数据类型的格式语言,可用于生成 Java、C++ 和 JavaScript 等语言中的接口。

IPC

IPC 代表进程间通信。 Electron使用IPC在主进程和渲染器进程之间发送 序列化的JSON消息。

参见: main process, renderer process

main process

主进程,通常是指 main.js 文件,是每个 Electron 应用的入口文件。 控制着整个应用的生命周期,从打开到关闭。 它也管理着系统原生元素比如菜单,菜单栏,Dock 栏,托盘等。 主进程负责创建 APP 的每一个渲染进程。 包含了全功能的 Node API。

应用的主进程定义在 package.json 中的 main 属性中。 当您运行 electron . 时 Electron 便会知道需要运行哪个文件。

在Chromium中,此进程被称为“浏览器进程”。 Electron 中这样称呼是为了不与渲染进程混淆。

参见: process, renderer process

MAS

这是苹果 Mac App Store 的缩写。 有关如何提交您的应用到 MAS 上,请参见 Mac App Store Submission Guide

Mojo

一种用于进程内部或进程间通信的 IPC 系统, 这很重要, 因为 Chrome会依据内存压力等来决定是否将其工作分拆给不同的进程。

可参考https://chromium.googlesource.com/chromium/src/+/main/mojo/README.md

参见: IPC

MSI

在 Windows上,Windows 安装程序 (也称为Microsoft Installer) 服务使用MSI软件包来安装和配置 应用程序。

更多信息可以在 微软的文档 中找到。

native modules

原生模块(在 Node.js 中也称为 addon)是用C/C++写成的,可以在 Node.js 中加载,或通过 require() 函数在 Electron 中引入的模块。这些模块用起来与普通的Node.js模块并无二致。 它主要用于桥接在 JavaScript 上运行 Node.js 和 C/C++ 的库。

Electron 支持原生的 Node 模块,但是 Electron 非常可能使用了和你系统中安装的Node所不一样的 V8 版本,所以在构建原生模块的时候你需要手动指定 Electron 所使用的头文件的位置。

有关详细信息,请阅读 原生 Node 模块 教程。

notarization(公证化)

公证是一个特定于 macOS 的过程,开发人员可以在其中将经过代码签名的应用发送到 Apple 服务器,以便通过自动化服务查验恶意组件。

另请参见: 代码签名

OSR

OSR(离屏渲染) 可以让您在后台渲染大型页面,之后再将其显示到屏幕上(这种方式更快)。 这使您不必将页面显示到屏幕上也可以渲染它。

有关详细信息,请阅读 离屏渲染 教程。

preload script(预加载脚本)

预加载脚本包含在渲染器进程中, 里面的代码在其网页内容加载之前执行。 这些脚本虽运行于渲染器的环境中,却因能访问 Node.js API 而拥有了更多的权限。

另请参见: 渲染器进程上下文隔离

process

一个进程是计算机程序执行中的一个实例。 Electron 应用同时使用了main 进程和一个或者多个 renderer 进程来运行多个程序。

在 Node.js 和 Electron 里面,每个运行的进程包含一个 process 对象。 这个对象作为一个全局的提供当前进程的相关信息和操作方法。 作为一个全局变量,它在应用内能够不用 require() 来随时取到。

参见: main process, renderer process

renderer process

渲染进程是应用中的浏览器窗口。 与主进程不同,渲染进程可能同时存在多个,同时,每一个渲染进程都运行与独立的进程中。 渲染进程也可以隐藏。

参见: process, main process

sandbox

沙盒是一个从Chromium继承下来的安全功能,它将你的渲染过程限制在一组有限的权限。

有关详细信息,请阅读 沙盒进程 教程。

另见: 进程

Squirrel

Squirrel 是一个开源框架, 能够让 Electron 应用程序自动更新到最新发布的版本. 详见 autoUpdater API 了解如何开始使用 Squirrel。

userland

“userland” 或者 “userspace” 术语起源于 Unix 社区,当程序运行在操作系统内核之外。 最近这个术语被推广到 Node 和 npm 社区,用于区分 “Node 内核”功能与在 npm 上注册的”用户” 们所发布的包的功能。

就像 Node ,Electron 致力于使用较小的API集来支持开发跨平台应用所必需的原语。 这个设计理念让 Electron 能够保持灵活而不被过多的规定有关于如何应该被使用。 Userland 让用户能够创造和分享一些工具来提额外的功能在这个能够使用的 “core(核心)”之上。

utility process

The utility process is a child of the main process that allows running any untrusted services that cannot be run in the main process. Chromium uses this process to perform network I/O, audio/video processing, device inputs etc. In Electron, you can create this process using UtilityProcess API.

参见: process, main process

V8

V8 是谷歌开源的 JavaScript 引擎。 它是用 C++ 编写的,用于谷歌的 Chrome 浏览器。 V8 可以单独运行,也可以嵌入任何 C++ 应用程序。

Electron将 V8 作为Chromium的一个部分进行构建,然后在构建Node时也指向那个 V8

V8 的版本号与谷歌 Chrome 的版本号对应。 Chrome 59 的 V8 版本是 5.9,Chrome 58 的V8 版本是 5.8,以此类推。

webview

webview 标签页用于在您的 Electron 应用中嵌入“访客”内容(例如外部网页)。 其功能与 iframe 类似,但 webview 运行于独立的进程中。 作为页面它拥有不一样的权限并且所有的嵌入的内容和你应用之间的交互都将是异步的。 这将保证你的应用对于嵌入的内容的安全性。