跳转至

术语表

本页定义了一些在 Electron 开发中常用的术语。

ASAR

ASAR 是 Atom Shell Archive Format 的缩写。asar 归档是一种简单的 类似 tar 的格式,它将文件拼接为单个文件。Electron 可以从中读取任意文件, 而无需解包整个文件。

ASAR 格式最初主要是为了在 Windows 上读取大量小文件时提升性能 (例如从 node_modules 加载应用的 JavaScript 依赖树时)。

ASAR 完整性

ASAR 完整性是一项安全特性,用于在运行时验证应用 ASAR 归档的内容。启用后, 你的 Electron 应用会在运行时验证其 ASAR 归档的头部哈希。如果不存在哈希, 或哈希不匹配,应用将强制终止。

有关更多详细信息,请参阅 ASAR 完整性 指南。

代码签名

代码签名是应用开发者对其代码进行数字签名的过程,以确保代码在打包后 未被篡改。Windows 和 macOS 都实现了各自的代码签名机制。作为桌面应用开发者, 如果你计划向公众分发应用,那么对你的代码进行签名非常重要。

有关更多信息,请阅读 代码签名 教程。

上下文隔离

上下文隔离是 Electron 中的一项安全措施,可确保你的预加载脚本不会将特权 Electron 或 Node.js API 泄露到渲染进程中的网页内容。启用上下文隔离后, 从预加载脚本暴露 API 的唯一方式是通过 contextBridge API。

有关更多信息,请阅读 上下文隔离 教程。

另请参阅:预加载脚本、渲染进程

CRT

C 运行时库(CRT)是 C++ 标准库中纳入 ISO C99 标准库的部分。实现 CRT 的 Visual C++ 库支持原生代码开发,以及 .NET 开发中的混合原生代码和托管代码, 以及纯托管代码。

DMG

Apple 磁盘映像(Apple Disk Image)是 macOS 使用的一种打包格式。DMG 文件 通常用于分发应用“安装程序”。

IME

输入法编辑器(Input Method Editor)。一种允许用户输入键盘上没有的字符和 符号的程序。例如,它允许使用拉丁键盘的用户输入中文、日文、韩文和印度系文字。

IDL

接口描述语言。以可用于生成 Java、C++、JavaScript 等接口的格式编写函数签名 和数据类型。

IPC

IPC 是进程间通信(inter-process communication)的缩写。Electron 使用 IPC 在主进程和渲染进程之间发送序列化的 JSON 消息。

另请参阅:主进程、渲染进程

主进程

主进程通常是名为 main.js 的文件,是每个 Electron 应用的入口点。它控制 应用的生命周期,从打开到关闭。它还管理菜单、菜单栏、Dock、托盘等原生元素。 主进程负责创建应用中的每个新渲染进程。完整的 Node API 已内置。

每个应用的主进程文件都在 package.json 的 main 属性中指定。这就是 electron . 在启动时知道要执行哪个文件的原因。

在 Chromium 中,该进程被称为“浏览器进程”。在 Electron 中,它被重命名, 以避免与渲染进程混淆。

另请参阅:进程、渲染进程

MAS

MAS 是 Apple 的 Mac App Store 的缩写。有关将应用提交到 MAS 的详细信息, 请参阅 Mac App Store 提交指南。

Mojo

Mojo 是一个用于进程内或进程间通信的 IPC 系统,这一点很重要,因为 Chrome 希望根据内存压力等因素,能够将其工作拆分到单独的进程中,或者不拆分。

参见 https://chromium.googlesource.com/chromium/src/+/main/mojo/README.md

另请参阅:IPC

MSI

在 Windows 上,MSI 包由 Windows Installer(也称为 Microsoft Installer) 服务用于安装和配置应用程序。

更多信息可在 微软文档 中找到。

原生模块

原生模块(在 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(离屏渲染)可用于在后台加载重量级页面,然后再显示它(这会快得多)。 它允许你渲染页面而不将其显示在屏幕上。

有关更多信息,请阅读 离屏渲染 教程。

预加载脚本

预加载脚本包含在渲染进程中执行的代码,执行时间早于其网页内容开始加载。 这些脚本在渲染器上下文中运行,但由于可以访问 Node.js API,因此被授予更多 权限。

另请参阅:渲染进程、上下文隔离

进程

进程是正在执行的计算机程序的一个实例。使用 主进程 以及一个或多个 渲染进程 的 Electron 应用实际上是在同时运行多个程序。

在 Node.js 和 Electron 中,每个运行中的进程都有一个 process 对象。该对象 是一个全局对象,提供有关当前进程的信息,并用于控制当前进程。作为全局对象, 它始终可用于应用程序,而无需使用 require()。

另请参阅:主进程、渲染进程

渲染进程

渲染进程是您应用中的浏览器窗口。与主进程不同, 可以存在多个渲染进程,并且每个渲染进程都在单独的进程中运行。 它们也可以被隐藏。

另请参阅:进程、主进程

沙箱

沙箱是从 Chromium 继承而来的安全特性,它将 您的渲染进程限制在一组有限的权限内。

如需了解更多信息,请阅读 Process Sandboxing 教程。

另请参阅:进程

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 时让 Node 指向该 V8。

V8 的版本号始终与 Google Chrome 的版本号相对应。Chrome 59 包含 V8 5.9,Chrome 58 包含 V8 5.8,依此类推。

webview

webview 标签用于在您的 Electron 应用中嵌入 '来宾' 内容(例如外部网页)。它们类似于 iframes,但区别在于每个 webview 都在单独的进程中运行。它没有与您的网页相同的 权限,并且您的应用与 嵌入内容之间的所有交互都将是异步的。这使您的应用免受 嵌入内容的侵害。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron