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