主进程负责原生操作,渲染进程展示页面,两者通过ipcMain和ipcRenderer实现双向通信。

Electron 应用由主进程和渲染进程组成,两者分工明确:主进程管理窗口、菜单、系统事件等原生操作,渲染进程负责展示页面内容。由于它们运行在不同环境中,通信必须通过特定机制完成。
主进程与渲染进程的基本职责
主进程基于 Node.js 环境,可调用操作系统底层功能,如打开文件对话框、创建窗口。每个 Electron 应用只有一个主进程。渲染进程是每个窗口中的网页运行环境,类似浏览器标签页,默认不支持 Node.js(可通过配置开启)。
两者不能直接访问对方变量或函数,必须借助 Electron 提供的通信模块。
使用 ipcMain 和 ipcRenderer 进行通信
Electron 提供 ipcMain(主进程)和 ipcRenderer(渲染进程)模块实现双向通信。常用方法包括发送消息和监听响应。
立即学习“Java免费学习笔记(深入)”;
-
渲染进程向主进程发送消息: 使用
ipcRenderer.send()发送同步或异步消息,主进程用ipcMain.on()监听 -
主进程向渲染进程回复或推送消息: 通过
event.reply()回复,或使用webContents.send()主动发送
示例:点击渲染进程按钮请求打开文件
// 渲染进程(renderer.js)const { ipcRenderer } = require('electron')
document.getElementById('openFile').addEventListener('click', () => {
ipcRenderer.send('open-file-dialog')
})
ipcRenderer.on('file-selected', (event, filePath) => {
console.log('选中文件:', filePath)
})
// 主进程(main.js)
const { ipcMain } = require('electron')
ipcMain.on('open-file-dialog', (event) => {
// 打开文件选择框逻辑...
event.reply('file-selected', '/path/to/file.txt')
})
安全与最佳实践
通信过程中需注意数据验证,防止恶意内容注入。避免在消息中传递大量数据或敏感信息。推荐使用唯一且语义化的事件名称,防止冲突。
对于复杂应用,可封装通信逻辑为服务模块,统一处理请求响应。若需双向调用返回结果,可结合 Promise 封装异步通信。
基本上就这些。掌握 ipc 通信机制后,就能灵活协调主进程和渲染进程的功能了。










