## 前言
在白板交互中,有寫electron的執行事件最終是通過electron的ipc,也就是ipcMain完成的。
const { app, BrowserWindow, ipcMain: ipc } = electron;
## ipcMain
描述:主進程和渲染進程的通訊。

- [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));
}
```
- 相關資源鏈接
- 米樂星球小程序內調研
- 項目結構說明
- 交互課件說明
- server項目說明
- 項目說明
- 項目啟動
- app.js做的事情
- 獲取互動課件的地址
- 分析互動課件地址的參數
- policy目錄--lesson.js
- 解析ppt--api/lesson.js
- 信令中的key:template
- 信令中的key:media
- kk-talkee-engine.js
- Message
- 課件模板頁的識別過程
- 解析課件模板的源文件
- 場景與模板的對應關系
- 所有場景的基類
- choiceScence為例
- 注意事項
- ws
- online項目的說明
- online消息
- 課件編輯項目
- 資源鏈接
- 基本項目信息
- electron項目結構分析
- ipc
- 模板題組
- 普通題組
- 游戲題組
- 課件導出內容分析
- 課件模板分類明細
- 圖片題
- 視頻題
- 音頻題
- 選擇題
- 判斷題
- 轉盤
- 篩子
- 圖層拖拽
- 動畫題
- 翻拍題
- 語音題
- 201908變更
- 課件制作流程分析
- 菜單配置
- 入口操作
- 定義模板布局與初始化
- 選擇素材
- 導出過程
- egret
- interface
- ad選擇器模板
- ab選擇器模板
- 圖層拖拽模板
- 判斷題模板
- xml
- 轉盤
- events
- components
- 父類組件
- 基本組件
- 判斷題組件
- 龍骨動畫調研
- 基本了解
- 產品原型
- 白板Client項目
- 消息類型
- 白板項目分析
- 入口