术语表
本页定义了 Electron 开发中常用的一些术语。
ASAR
ASAR 代表 Atom Shell Archive Format。 asar 归档是一种简单的类似于 tar
的格式,它将文件连接成一个单独的文件。 Electron 可以从中读取任意文件,而无需解压整个文件。
创建 ASAR 格式的主要目的是提高 Windows 在读取大量小文件时的性能(例如,从 node_modules
加载应用程序的 JavaScript 依赖树时)。
代码签名
代码签名是应用程序开发人员对其代码进行数字签名的过程,以确保在打包后代码没有被篡改。 Windows 和 macOS 都实现了各自版本的代码签名。 作为桌面应用程序开发人员,如果你计划将其分发给大众,则必须对你的代码进行签名。
有关更多信息,请阅读 代码签名 教程。
上下文隔离
上下文隔离是 Electron 中的一项安全措施,可确保你的预加载脚本不会将特权的 Electron 或 Node.js API 泄漏到渲染器进程中的 Web 内容。 启用上下文隔离后,从预加载脚本公开 API 的唯一方法是通过 contextBridge
API。
有关更多信息,请阅读 上下文隔离 教程。
CRT
C 运行时库 (CRT) 是 C++ 标准库的一部分,它包含 ISO C99 标准库。 实现 CRT 的 Visual C++ 库支持本机代码开发,以及混合本机和托管代码,以及用于 .NET 开发的纯托管代码。
DMG
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 上,Windows Installer(也称为 Microsoft Installer)服务使用 MSI 包来安装和配置应用程序。
更多信息可以在 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(离屏渲染)可用于在后台加载繁重的页面,然后在加载后显示(速度会快得多)。 它允许你渲染页面而不将其显示在屏幕上。
有关更多信息,请阅读 离屏渲染 教程。
预加载脚本
预加载脚本包含在渲染器进程的 Web 内容开始加载之前执行的代码。 这些脚本在渲染器上下文中运行,但通过访问 Node.js API 被授予更多特权。
进程
进程是正在执行的计算机程序的实例。 使用 主进程 和一个或多个 渲染器 进程的 Electron 应用程序实际上同时运行多个程序。
在 Node.js 和 Electron 中,每个正在运行的进程都有一个 process
对象。 此对象是一个全局对象,提供有关当前进程的信息和对当前进程的控制。 作为全局对象,它始终可供应用程序使用,而无需使用 require()。
渲染器进程
渲染器进程是应用程序中的浏览器窗口。 与主进程不同,可以有多个此类进程,并且每个进程都在单独的进程中运行。 它们也可以被隐藏。
沙箱
沙箱是从 Chromium 继承的安全功能,它将你的渲染器进程限制为一组有限的权限。
有关更多信息,请阅读 进程沙箱 教程。
另请参阅:进程
Squirrel
Squirrel 是一个开源框架,它使 Electron 应用程序能够在发布新版本时自动更新。 有关开始使用 Squirrel 的信息,请参阅 autoUpdater API。
用户空间
这个术语起源于 Unix 社区,其中 “userland” 或 “userspace” 指的是在操作系统内核之外运行的程序。最近,这个术语在 Node 和 npm 社区中普及,用于区分“Node core”中可用的功能与由更大的“用户”社区发布到 npm 注册表的软件包。
与 Node 类似,Electron 也专注于拥有一小部分 API,这些 API 提供了开发多平台桌面应用程序所需的所有基本元素。这种设计理念使 Electron 保持了灵活的工具特性,而不会过度规定其使用方式。“Userland” 使用户能够创建和共享在“核心”可用功能之上提供额外功能的工具。
实用程序进程
实用程序进程是主进程的子进程,它允许运行任何不能在主进程中运行的不受信任的服务。Chromium 使用此进程执行网络 I/O、音频/视频处理、设备输入等。在 Electron 中,你可以使用 UtilityProcess API 创建此进程。
V8
V8 是 Google 的开源 JavaScript 引擎。它是用 C++ 编写的,并在 Google Chrome 中使用。V8 可以独立运行,也可以嵌入到任何 C++ 应用程序中。
Electron 将 V8 作为 Chromium 的一部分构建,然后在构建 Node 时将 Node 指向该 V8。
V8 的版本号始终与 Google Chrome 的版本号相对应。Chrome 59 包括 V8 5.9,Chrome 58 包括 V8 5.8,依此类推。
webview
webview
标签用于在你的 Electron 应用程序中嵌入“访客”内容(例如外部网页)。它们类似于 iframe
,但不同之处在于每个 webview 都在单独的进程中运行。它与你的网页没有相同的权限,你的应用程序和嵌入内容之间的所有交互将是异步的。这可以保护你的应用程序免受嵌入内容的侵害。