Electron的主进程,渲染进程是如何通信的?

13 min read

Electron的主进程和渲染进程之间可以通过ipcMain和ipcRenderer模块进行通信。

主进程可以使用ipcMain模块来监听来自渲染进程的事件并作出相应的处理。渲染进程可以使用ipcRenderer模块来向主进程发送事件并等待响应。

具体地,主进程可以使用ipcMain.on()方法来监听事件,例如:

// 在主进程中监听来自渲染进程的消息
const { ipcMain } = require('electron');

ipcMain.on('message', (event, arg) => {
  console.log(arg); // 打印渲染进程传来的消息
  event.reply('reply', 'Received');
});

渲染进程可以使用ipcRenderer.send()方法来向主进程发送事件,并且可以通过ipcRenderer.on()方法来监听主进程的响应,例如:

// 在渲染进程中向主进程发送消息
const { ipcRenderer } = require('electron');

ipcRenderer.send('message', 'Hello, World!'); // 发送消息
ipcRenderer.on('reply', (event, arg) => {
  console.log(arg); // 打印主进程传回的响应
});

需要注意的是,主进程和渲染进程之间的通信由于可能被攻击者利用来执行代码,因此需要非常小心。可以通过在渲染进程中使用contextIsolation选项和在主进程中使用contextBridge模块来增强通信的安全性。