术语表
本页定义了一些 Electron 开发中常用的术语。
ASAR
ASAR 是 Atom Shell Archive Format 的缩写。一个 asar 归档文件是一种简单的类似 tar
的格式,它将文件连接到单个文件中。Electron 可以从中读取任意文件而无需解压整个文件。
ASAR 格式创建的主要目的是为了提高在 Windows 上读取大量小文件时的性能(例如,从 node_modules
加载应用程序的 JavaScript 依赖树时)。
代码签名
代码签名是一个过程,应用程序开发者通过数字方式签署其代码,以确保打包后未被篡改。Windows 和 macOS 都实现了各自的代码签名版本。作为桌面应用程序开发者,如果计划将应用程序分发给大众,签署代码非常重要。
欲了解更多信息,请阅读代码签名教程。
上下文隔离
上下文隔离是 Electron 中的一项安全措施,用于确保你的预加载脚本不会将特权的 Electron 或 Node.js API 泄露给渲染器进程中的网页内容。启用上下文隔离后,从预加载脚本公开 API 的唯一方法是通过 contextBridge
API。
欲了解更多信息,请阅读上下文隔离教程。
CRT
C 运行时库(CRT)是 C++ 标准库的一部分,包含了 ISO C99 标准库。实现 CRT 的 Visual C++ 库支持原生代码开发,以及混合原生和托管代码,以及用于 .NET 开发的纯托管代码。
DMG
Apple Disk Image 是 macOS 使用的一种打包格式。DMG 文件通常用于分发应用程序的“安装程序”。
IME
输入法编辑器(Input Method Editor)。一个允许用户输入键盘上找不到的字符和符号的程序。例如,它允许拉丁键盘用户输入中文、日文、韩文和印度文字符。
IDL
接口描述语言(Interface description language)。以一种可用于生成 Java、C++、JavaScript 等语言接口的格式编写函数签名和数据类型。
IPC
IPC 代表进程间通信(inter-process communication)。Electron 使用 IPC 在主进程和渲染器进程之间发送序列化的 JSON 消息。
主进程
主进程,通常是一个名为 main.js
的文件,是每个 Electron 应用程序的入口点。它控制着应用程序的生命周期,从打开到关闭。它还管理原生元素,如菜单、菜单栏、Dock、系统托盘等。主进程负责在应用程序中创建每个新的渲染器进程。完整的 Node API 都内置其中。
每个应用程序的主进程文件在 package.json
中的 main
属性中指定。这就是 electron .
如何知道启动时要执行哪个文件。
在 Chromium 中,这个进程被称为“浏览器进程”。在 Electron 中将其重命名,以避免与渲染器进程混淆。
MAS
苹果 Mac App Store 的首字母缩略词。有关将应用程序提交到 MAS 的详细信息,请参阅Mac App Store 提交指南。
Mojo
一个用于进程内或进程间通信的 IPC 系统,这很重要,因为 Chrome 热衷于能够根据内存压力等将工作拆分到单独的进程中(或不拆分)。
参见 https://chromium.googlesource.com/chromium/src/+/main/mojo/README.md
另请参阅:IPC
MSI
在 Windows 上,MSI 包由 Windows Installer (也称为 Microsoft Installer) 服务用于安装和配置应用程序。
更多信息请参阅Microsoft 文档。
原生模块
原生模块(在 Node.js 中也称为 附加模块)是用 C 或 C++ 编写的模块,可以使用 require() 函数加载到 Node.js 或 Electron 中,并像普通的 Node.js 模块一样使用。它们主要用于在 Node.js 中运行的 JavaScript 和 C/C++ 库之间提供接口。
Electron 支持原生 Node 模块,但是由于 Electron 很可能使用与系统中安装的 Node 二进制文件不同的 V8 版本,因此在构建原生模块时必须手动指定 Electron 头文件的位置。
欲了解更多信息,请阅读原生 Node 模块教程。
公证
公证是一个 macOS 特有的过程,开发者可以将签名后的应用程序发送到 Apple 服务器,通过自动化服务验证是否存在恶意组件。
另请参阅:代码签名
OSR
OSR(离屏渲染)可用于在后台加载大型页面,然后在之后显示(这样会快很多)。它允许你在屏幕上不显示页面的情况下进行渲染。
欲了解更多信息,请阅读离屏渲染教程。
预加载脚本
预加载脚本包含在渲染器进程的网页内容开始加载之前执行的代码。这些脚本在渲染器上下文中运行,但由于可以访问 Node.js API 而获得更多权限。
进程
进程是正在执行的计算机程序的一个实例。利用主进程和一个或多个渲染器进程的 Electron 应用程序实际上是同时运行多个程序。
在 Node.js 和 Electron 中,每个正在运行的进程都有一个 process
对象。此对象是一个全局对象,提供有关当前进程的信息和控制。作为全局对象,应用程序无需使用 require() 即可始终访问它。
渲染器进程
渲染器进程是应用程序中的一个浏览器窗口。与主进程不同,可以有多个渲染器进程,每个进程都在单独的进程中运行。它们也可以被隐藏。
沙箱
沙箱是继承自 Chromium 的一项安全功能,它将渲染器进程限制在一组有限的权限内。
欲了解更多信息,请阅读进程沙箱教程。
另请参阅:进程
Squirrel
Squirrel 是一个开源框架,使 Electron 应用程序能够在发布新版本时自动更新。有关开始使用 Squirrel 的信息,请参阅 autoUpdater API。
用户区
这个术语起源于 Unix 社区,其中“用户区”(userland)或“用户空间”(userspace)指代在操作系统内核之外运行的程序。最近,这个术语在 Node 和 npm 社区流行起来,用于区分“Node 核心”中可用的功能与更广泛的“用户”社区发布到 npm 注册表的包。
与 Node 一样,Electron 专注于提供一套少量的 API,这些 API 提供了开发跨平台桌面应用程序所需的所有基本功能。这种设计理念使 Electron 能够保持一个灵活的工具,而不会对其使用方式过于强制规定。用户区允许用户创建和分享工具,这些工具在“核心”功能之上提供额外功能。
工具进程
工具进程是主进程的子进程,允许运行任何不能在主进程中运行的不受信任的服务。Chromium 使用此进程执行网络 I/O、音频/视频处理、设备输入等。在 Electron 中,你可以使用 UtilityProcess API 创建此进程。
V8
V8 是 Google 的开源 JavaScript 引擎。它用 C++ 编写,并在 Google Chrome 中使用。V8 可以独立运行,也可以嵌入到任何 C++ 应用程序中。
Electron 将 V8 作为 Chromium 的一部分进行构建,然后在构建 Node 时将其指向该 V8。
V8 的版本号始终与 Google Chrome 的版本号对应。Chrome 59 包含 V8 5.9,Chrome 58 包含 V8 5.8,等等。
webview
webview
标签用于在你的 Electron 应用程序中嵌入“访客”内容(例如外部网页)。它们类似于 iframe
,但不同之处在于每个 webview 在单独的进程中运行。它与你的网页没有相同的权限,并且应用程序和嵌入内容之间的所有交互都是异步的。这可以保护你的应用程序免受嵌入内容的侵害。