Electron进程间通讯【一】主进程与渲染进程通信
Electron进程间通讯通信有3种情况:主进程与渲染进程之间的通讯、主进程与主进程之间的通讯、渲染进程与渲染进程之间的通讯。
本教程讲解Electron进程间通讯的第1种情况--主进程与渲染进程之间的通讯,我将自己在项目中用过的4种方法教给需要的同学。
另外,为了方便各位同学理解,我专门为本教程录制了视频。
1、通过ipcMain和ipcRenderer
- 01
首先,ipcRenderer发起通讯:上报 渲染进程Renderer Process通过“ipcRenderer.send(flag)”向主进程Main Process发起通讯,其中,“flag”是本次通讯的唯一标识符,该过程称为“上报”。
- 02
接着,ipcMain接收并反馈:指示 主进程Main Process通过“ipcMain.on(flag, ()=>function(){})”接收来自渲染进程Renderer Process的上报,并依据相应算法给出反馈,该过程称为“指示”。
- 03
最后,ipcRenderer处理ipcMain的指示。 渲染进程再通过ipcRenderer.on(anotherFlag)得到主进程的指示,然后依据相应算法处理该指示。
2、渲染进程使用remote
- 01
渲染进程通过remote直接使用主进程模块 正常情况下由于沙盒机制,渲染进程不可以使用主进程的模块,但是在渲染进程中引入remote后即可直接使用主进程的模块,该方法其实是第一种方法的简化。
3、主进程使用webContents.send
- 01
主进程使用webContent.send向渲染进程发起通讯 这种用法不需要渲染进程率先发起通讯,而是由主进程主动发起通讯。 在项目中,该用法比较常见,可以很方便地实现主进程主动控制渲染进程的行为。
4、主进程访问渲染进程
- 01
主进程通过webContents.executeJavascript访问渲染进程 该方法是第2种方法--渲染进程通过remote直接使用主进程模块的反向操作。 其用法是“webContents.executeJavaScript(codeSentence[, userGesture, callback])”。