Electron 应用中主进程与渲染进程必须通过 IPC 通信:主进程管理窗口和系统 API,渲染进程负责 UI;使用 ipcMain 和 ipcRenderer 配合 invoke/handle 实现安全双向通信,推荐通过 preload.js 暴露受限 API。

Electron 应用里,主进程和渲染进程是两个独立运行、彼此隔离的环境,它们不能直接共享变量或调用函数。通信必须通过明确的、受控的通道完成——核心就是 IPC(Inter-Process Communication)机制。理解清楚这个机制,是写出稳定、安全、可维护 Electron 应用的关键。
主进程(通常由 main.js 启动)负责创建窗口、管理应用生命周期、访问操作系统 API(如文件系统、托盘、菜单等)。它运行在 Node.js 环境中,拥有完整权限。
渲染进程(每个 BrowserWindow 对应一个)本质是 Chromium 浏览器页,运行在 Web 环境中,默认禁用 Node.js 集成(出于安全考虑),只负责 UI 渲染和用户交互。
二者不共享内存,也不共用全局对象。想让“点击按钮后保存文件”,就得靠 IPC 搭桥:渲染进程发请求 → 主进程收消息 → 执行操作 → 再把结果发回去。
Electron 提供一对配套 API 实现双向通信:
注意:渲染进程默认无法直接 require('electron'),需在 webPreferences 中显式开启 contextIsolation: false 和 nodeIntegration: true(不推荐);更安全的做法是通过 preload.js 暴露有限、受控的 API 给渲染进程使用。
它是在渲染进程加载页面前执行的脚本,运行在主进程与渲染进程之间的“中间层”:既能访问 Node.js(通过 contextBridge),又能向 window 注入 API,但不会暴露整个 Electron 或 Node 对象。
典型写法示例:
const { contextBridge, ipcRenderer } = require('electron')
contextBridge.exposeInMainWorld('api', {
saveFile: (content) => ipcRenderer.invoke('save-file', content),
onOpen: (callback) => ipcRenderer.on('file-opened', callback)
})
这样,渲染进程里就能安全调用 window.api.saveFile(...),而无需暴露 ipcRenderer 全局对象。
基本上就这些。IPC 不复杂,但容易忽略安全边界和生命周期管理。理清谁该发、谁该收、怎么传、怎么收,主渲染协同自然就稳了。
以上就是Sublime开发Electron桌面应用_主进程与渲染进程通信机制详解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号