这篇笔记主要解决的问题是Electron的主进程与渲染进程之间的通信.
使用ipcMain和ipcRenderer
// 来自官方的示例
const {ipcMain} = require('electron')
ipcMain.on('asynchronous-message', (event, arg) => {
console.log(arg) // prints "ping"
event.sender.send('asynchronous-reply', 'pong')
})
ipcMain.on('synchronous-message', (event, arg) => {
console.log(arg) // prints "ping"
event.returnValue = 'pong'
})
要点:
渲染进程可以通过ipcRenderer向主进程发送消息
主进程通过ipcMain监听来自渲染进程的消息. 并根据消息类型执行不同的操作
主进程的回调方法包含event和arg两个参数. arg对象中保存了渲染进程传递的参数. 通过event.sender对象,主进程可以直接向渲染进程发送返回消息. 如果主进程执行的同步方法,还可以通过设置event.returnValue来获取返回值.
使用 electron.remote 模块
在渲染进程中,可以通过const {remote} = require('electron')来获取到remote对象. 通过这个对象可以允许渲染进程访问主进程的模块.