Electron 核心概念(2025 年最新)
Electron 的核心在于其多进程架构,继承自 Chromium,类似于现代浏览器的设计。这种架构确保了应用的稳定性、安全性和可扩展性。以下是 Electron 最根本的核心概念:
1. 主进程(Main Process)
- 唯一性:每个 Electron 应用只有一个主进程,由
package.json中的main字段指定的脚本启动(如main.js)。 - 运行环境:完整的 Node.js 环境,可直接使用
require()和所有 Node.js/Electron API。 - 主要职责:
- 管理应用生命周期(通过
app模块:whenReady、quit等)。 - 创建和管理窗口(
BrowserWindow)。 - 处理原生桌面功能(菜单、托盘、对话框、通知等)。
- 作为“桥梁”连接渲染进程与系统资源。
2. 渲染进程(Renderer Process)
- 数量:每个
BrowserWindow或BrowserView对应一个独立的渲染进程。 - 运行环境:标准的 Web 环境(HTML、CSS、JavaScript),类似于浏览器标签页。
- 职责:负责渲染用户界面和处理网页交互逻辑。
- 安全限制(2025 年默认):
nodeIntegration: false(禁用直接访问 Node.js)。contextIsolation: true(隔离上下文,防止恶意代码访问特权 API)。- 优势:进程隔离,即使一个窗口崩溃也不会影响整个应用。
3. 预加载脚本(Preload Script)
- 位置:在渲染进程网页加载前执行,通过
webPreferences.preload指定。 - 特权:有 Node.js 和 Electron API 访问权,但与网页内容隔离。
- 核心作用:安全桥接主/渲染进程,使用
contextBridge.exposeInMainWorld()暴露有限 API 到渲染进程。 - 最佳实践:这是 2025 年推荐的通信方式,避免直接启用 Node 集成。
4. 进程间通信(IPC – Inter-Process Communication)
- 必要性:渲染进程无法直接访问系统 API,必须通过主进程。
- 主要方式:
ipcMain(主进程监听) +ipcRenderer(渲染进程发送)。- 同步/异步消息、invoke/handle 模式。
- 通过 preload 脚本桥接,确保安全。
- 示例:渲染进程请求版本信息,主进程响应。
5. 工具进程(Utility Process)(可选进阶)
- 用途:处理 CPU 密集任务、不信任代码或易崩溃组件。
- 启动:主进程通过
UtilityProcessAPI 创建。 - 通信:支持 Node.js,直接与渲染进程用
MessagePort通信。
6. 其他关键概念
- 应用生命周期:
app模块事件(如ready、window-all-closed、activate),macOS 与 Windows/Linux 行为不同。 - 安全性:上下文隔离、沙箱、禁用不必要特权是核心原则。
- Chromium + Node.js 融合:Web 技术渲染 UI + 系统级访问。
这些概念构成了 Electron 的基础框架,理解它们就能避免常见坑(如安全漏洞、通信混乱)。官方文档的 Process Model 部分是最权威解释:https://www.electronjs.org/docs/latest/tutorial/process-model
掌握后,你可以轻松构建复杂应用!如果想看具体代码示例或某个概念的深入讲解,告诉我~