跳到主要内容

主进程与渲染进程

主进程​

主进程是应用入口,文件由 package.json 的 main 指定。它可以使用 Node.js 和全部 Electron 主进程模块,例如 app、BrowserWindow、dialog、ipcMain。

适合放在主进程的工作:

  • 创建和销毁窗口
  • 读写用户数据目录里的文件和数据库
  • 托盘、菜单、全局快捷键、开机启动
  • 接收渲染进程的请求并校验参数

主进程只有一个线程跑 JavaScript。这里的同步大计算或同步磁盘操作会拖住所有窗口的 IPC。重活放到 utilityProcess。

渲染进程​

每个 BrowserWindow 或 WebContentsView 带有一个 webContents,页面就跑在对应的渲染进程里。这里可以使用 DOM、CSS、前端框架和 Web API。

默认配置下,页面脚本不能 require('fs') 或 require('electron')。它能用的桌面能力,是预加载脚本用 contextBridge 挂到 window 上的那些函数。

两边怎么配合​

// 渲染进程:只调用预加载暴露的函数
const file = await window.api.pickFile();

// 主进程:真正打开系统对话框
ipcMain.handle('dialog:pick', async (event) => {
const win = BrowserWindow.fromWebContents(event.sender);
const result = await dialog.showOpenDialog(win, { properties: ['openFile'] });
return result.filePaths[0] ?? null;
});

页面负责展示,主进程负责系统调用。参数在主进程里再检查一次,因为页面里的脚本可能被替换。

相关文档​