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