🧩 一、Electron 的进程架构总览
Electron 应用实际上是一个 Node.js 与 Chromium 的混合体,由多个进程组成:
| 进程类型 | 作用 | 安全性 | 通信方式 | 适用场景 |
|---|---|---|---|---|
| 主进程 | 应用控制中心 | 高(需谨慎处理) | IPC | 应用生命周期管理、系统交互 |
| 渲染进程 | UI渲染与交互 | 中(默认隔离) | IPC | 界面展示、用户交互 |
| 预加载脚本 | 安全API暴露 | 高 | contextBridge | 安全地暴露API给渲染进程 |
| Child Process | 外部程序执行 | 高(进程隔离) | 主进程中介 | CPU密集型任务、外部程序调用 |
| Worker Threads | CPU密集型任务 | 中(同进程) | Worker API | CPU密集型任务,轻量级并行 |
关键安全提示:渲染进程默认不具备Node.js访问权限(
nodeIntegration: false),必须通过预加载脚本安全暴露API,避免安全漏洞。
Electron 各种进程的主要职责
1. 主进程 (Main Process)
- 应用入口点:应用程序的起点是
main.js文件 - 应用生命周期管理:控制应用的启动、退出、休眠等生命周期事件
- 窗口管理:通过
BrowserWindow创建和管理所有应用窗口 - 系统级交互:处理菜单、系统托盘、文件系统访问、原生对话框等
- Node.js API 访问:拥有完整的Node.js API访问权限(
require、fs、path等) - IPC 通信处理:作为中介处理主进程与渲染进程之间的通信
- 全局服务管理:维护全局状态、处理全局快捷键、系统通知等
- 资源协调:协调多个渲染进程、GPU进程和工具进程
2. 渲染进程 (Renderer Process)
- UI 渲染:负责渲染HTML/CSS/JS内容,类似浏览器标签页
- 用户交互处理:响应鼠标点击、键盘输入等用户事件
- 页面生命周期管理:处理页面加载、刷新、导航、关闭等事件
- 前端逻辑执行:执行页面中的JavaScript代码、前端框架逻辑
- 安全隔离:默认不具备Node.js环境访问权限(出于安全考虑)
- 与主进程通信:通过IPC机制与主进程交互,委托处理系统级操作
- 独立运行:每个窗口(BrowserWindow)运行在独立的渲染进程中
默认情况下,渲染进程无法直接访问 Node.js API(出于安全考虑),但可以通过 预加载脚本(Preload Script) 和 IPC 通信 实现功能扩展。
3. 预加载脚本 (Preload Script)
- 安全桥梁:建立主进程与渲染进程之间的安全通信桥梁
- API 暴露:通过
contextBridge.exposeInMainWorld安全暴露API给渲染进程 - 上下文隔离:运行在与渲染进程相同上下文,但避免全局变量污染
- 安全防护:防止渲染进程直接访问Node.js API,减少安全风险
- 预加载执行:在渲染进程加载前运行,为渲染进程准备必要的API
4. Child Process (子进程)
- 外部程序执行:通过
child_process模块执行外部程序或脚本 - 环境隔离:与主进程完全隔离,安全性高
- CPU密集型任务处理:处理计算密集型任务,避免阻塞主进程
- 资源独立:拥有独立的进程空间和资源,不影响主进程
- 通信中介:通过主进程作为中介与Electron应用通信
5. Worker Threads (工作线程)
- CPU密集型任务处理:处理计算密集型任务,避免阻塞UI
- 轻量级多线程:Node.js提供的多线程能力,比Child Process更轻量
- 共享内存:与主进程共享内存,通信开销较小
- 同进程线程:在同一个Node.js进程中运行,避免进程间通信开销
- 任务并行:可以并行执行多个任务,提高应用性能
🧠 二、主进程 ↔ 渲染进程通信(IPC)
Electron 内置的 IPC(Inter-Process Communication)系统是主进程和渲染进程之间通信的核心。
1️⃣ 渲染进程发送消息到主进程
// Renderer
const {
ipcRenderer } = require('electron'

最低0.47元/天 解锁文章
1279

被折叠的 条评论
为什么被折叠?



