术语表
本页定义了 Electron 开发中常用的术语。
ASAR
ASAR 代表 Atom Shell Archive Format。一个 asar 存档是一个简单的 tar
类格式,将文件连接到单个文件中。Electron 可以在不解压缩整个文件的情况下读取其中的任意文件。
ASAR 格式的主要目的是在读取大量小文件时(例如,从 node_modules
加载应用程序的 JavaScript 依赖项树)提高 Windows 上的性能。
代码签名
代码签名是应用程序开发者对代码进行数字签名的过程,以确保代码在打包后没有被篡改。Windows 和 macOS 都实现了它们自己的代码签名版本。作为桌面应用程序开发者,如果你打算将应用程序分发给公众,那么对代码进行签名非常重要。
有关详细信息,请阅读 代码签名 教程。
上下文隔离
上下文隔离是 Electron 中的一项安全措施,它确保你的预加载脚本不会将特权的 Electron 或 Node.js API 泄露到渲染器进程中的网页内容。在启用上下文隔离的情况下,从预加载脚本公开 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 应用程序的入口点。它控制应用程序的生命周期,从打开到关闭。它还管理本机元素,例如菜单、菜单栏、停靠栏、托盘等。主进程负责创建应用程序中的每个新的渲染器进程。内置了完整的 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 安装程序(也称为 Microsoft 安装程序)服务用于安装和配置应用程序。
有关详细信息,请参阅 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 社区,在 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 时将 Node 指向该 V8。
V8 的版本号始终与 Google Chrome 的版本号相对应。Chrome 59 包含 V8 5.9,Chrome 58 包含 V8 5.8,等等。
webview
webview
标签用于在您的 Electron 应用程序中嵌入“访客”内容(例如外部网页)。它们类似于 iframe
,但不同之处在于每个 webview 在单独的进程中运行。它没有与您的网页相同的权限,并且您的应用程序与嵌入内容之间的所有交互都将是异步的。这可以保护您的应用程序免受嵌入内容的侵害。