术语表
此页面定义了 Electron 开发中常用的一些术语。
ASAR
ASAR 代表 Atom Shell Archive Format(Atom Shell 归档格式)。一个 asar 归档是一种简单的 tar 类似格式,它将文件连接成一个文件。Electron 可以无需解包整个文件即可从中读取任意文件。
ASAR 格式主要是为了提高在 Windows 上读取大量小文件时的性能而创建的(例如,从 node_modules 加载应用程序的 JavaScript 依赖树时)。
ASAR 完整性
ASAR 完整性是 Electron 中的一项安全功能,用于在运行时验证应用程序的 ASAR 归档的内容。启用后,您的 Electron 应用程序将在运行时验证其 ASAR 归档的头部哈希。如果未找到哈希值或哈希值不匹配,应用程序将强制终止。
有关更多详细信息,请参阅 ASAR 完整性 指南。
代码签名
代码签名是指应用程序开发人员对他们的代码进行数字签名,以确保在打包后代码未被篡改的过程。Windows 和 macOS 都实现了各自版本的代码签名。作为桌面应用程序开发人员,如果您计划将其分发给公众,对您的代码进行签名非常重要。
有关更多信息,请阅读 代码签名 教程。
上下文隔离
上下文隔离是 Electron 中的一项安全措施,可确保您的预加载脚本无法将特权 Electron 或 Node.js API 泄漏到渲染进程中的 Web 内容中。启用上下文隔离后,从预加载脚本公开 API 的唯一方法是通过 contextBridge API。
有关更多信息,请阅读 上下文隔离 教程。
CRT
C 运行时库 (CRT) 是 C++ 标准库的一部分,它包含了 ISO C99 标准库。实现 CRT 的 Visual C++ 库支持本机代码开发,以及混合本机和托管代码,以及 .NET 开发的纯托管代码。
DMG
Apple Disk Image(Apple 磁盘映像)是 macOS 使用的打包格式。DMG 文件通常用于分发应用程序“安装程序”。
IME
输入法编辑器。允许用户输入键盘上没有的字符和符号的程序。例如,这允许使用拉丁键盘的用户输入中文、日语、韩语和印度字符。
IDL
接口描述语言。以可用于在 Java、C++、JavaScript 等中生成接口的格式编写函数签名和数据类型。
IPC
IPC 代表进程间通信。Electron 使用 IPC 在主进程和渲染进程之间发送序列化的 JSON 消息。
主进程
主进程通常是一个名为 main.js 的文件,是每个 Electron 应用程序的入口点。它控制应用程序的生命周期,从打开到关闭。它还管理本机元素,例如菜单、菜单栏、Dock、托盘等。主进程负责创建应用程序中的每个新的渲染进程。内置了完整的 Node API。
每个应用程序的主进程文件在 package.json 中的 main 属性中指定。这就是 electron . 在启动时知道要执行哪个文件的方式。
在 Chromium 中,此进程被称为“浏览器进程”。在 Electron 中,为了避免与渲染进程混淆,它被重命名。
MAS
Apple 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 中也称为 addons)是用 C 或 C++ 编写的模块,可以使用 require() 函数加载到 Node.js 或 Electron 中,并像普通的 Node.js 模块一样使用。它们主要用于在 Node.js 中运行的 JavaScript 和 C/C++ 库之间提供接口。
Electron 支持本机 Node 模块,但由于 Electron 很可能使用与系统中安装的 Node 二进制文件不同的 V8 版本,因此您必须在构建本机模块时手动指定 Electron 头文件的位置。
有关更多信息,请阅读 使用本机 Node 模块 教程。
公证
公证是 macOS 特定的流程,开发人员可以将代码签名的应用程序发送到 Apple 服务器,以通过自动服务验证是否存在恶意组件。
另请参阅:代码签名
OSR
OSR(屏幕外渲染)可用于在后台加载大型页面,然后在显示它(这将更快)。它允许您在屏幕上不显示的情况下渲染页面。
有关更多信息,请阅读 屏幕外渲染 教程。
预加载脚本
预加载脚本包含在渲染进程开始加载其 Web 内容之前在渲染进程中执行的代码。这些脚本在渲染器上下文中运行,但由于具有访问 Node.js API 的权限,因此获得了更多权限。
进程
进程是正在执行的计算机程序的实例。使用 主 进程和多个 渲染 进程的 Electron 应用程序实际上同时运行多个程序。
在 Node.js 和 Electron 中,每个正在运行的进程都有一个 process 对象。此对象是一个全局对象,提供有关当前进程的信息和控制权。作为全局对象,它始终可用,无需使用 require()。
渲染进程
渲染进程是您应用程序中的浏览器窗口。与主进程不同,可以有多个渲染进程,并且每个进程都在单独的进程中运行。它们也可以被隐藏。
沙箱
沙箱是继承自 Chromium 的一项安全功能,它将渲染进程限制为一组有限的权限。
有关更多信息,请阅读 进程沙箱 教程。
另请参阅:进程
Squirrel
Squirrel 是一个开源框架,可让 Electron 应用程序在发布新版本时自动更新。有关有关使用 Squirrel 的信息,请参阅 autoUpdater API。
用户空间
这个术语起源于 Unix 社区,在 Unix 社区中,“用户空间”或“用户态”指的是在操作系统内核之外运行的程序。最近,这个术语在 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 运行在单独的进程中。它没有与你的网页相同的权限,并且你的应用与嵌入内容之间的所有交互都将是异步的。这可以保护你的应用免受嵌入内容的侵害。