多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 前言 在白板交互中,有写electron的执行事件最终是通过electron的ipc,也就是ipcMain完成的。 const { app, BrowserWindow, ipcMain: ipc } = electron; ## ipcMain 描述:主进程和渲染进程的通讯。 ![](https://box.kancloud.cn/2e97f17726a239fd2a916995d9219c67_1530x384.png) - [ipc文档地址]([https://electronjs.org/docs/api/ipc-main#ipcmain](https://electronjs.org/docs/api/ipc-main#ipcmain)) ## electron中的ipc 我们通过定义一些字段,进行键值对的匹配,在函数执行时,可以直接执行ipc.project.xxx方法。这些绑定是在app.ready的时机中。 定义在/electron/ipc/project.js中,包括下面的这些方法的实际执行内容。 ``` app.on('ready', () => { ipc.on('save-project-dialog', showSaveProjectDialog); ipc.on('clear-temp-dir', clearTempDir); ipc.on('save-xml', saveXml); ipc.on('copy-file-list', copyFilesToTempDir); ipc.on('tar-and-upload', uploadTar); ipc.on('download-and-extract', downloadTar); ipc.on('unzip-and-extract', unzipTar); }); ``` 其中具体的执行函数就定义在该文件中。 ## egret中的ipc 目录,/egret/libs/project.js,electron中的断点只能定位到这里。具体ipcRenderer后续的函数执行不能定位。其中的send方法会寻找定义在ipc的对应方法。 ``` function clearTempDir(cb, thisObj) { ipcRenderer.send('clear-temp-dir'); ipcRenderer.once('clear-temp-dir-result', (event) => cb.call(thisObj)); } ```