在 Electron 應(yīng)用中,window.electron.ipcRenderer 是渲染進(jìn)程(瀏覽器運(yùn)行的環(huán)境)與主進(jìn)程(Node.js 環(huán)境)通信的核心機(jī)制。簡單解析其工作原理和 invoke 方法:
1. 主進(jìn)程 (Node.js 環(huán)境)
- 完全訪問操作系統(tǒng) API(文件系統(tǒng)、網(wǎng)絡(luò)等)
- 創(chuàng)建和管理瀏覽器窗口
2. 渲染進(jìn)程 (瀏覽器環(huán)境)
- 運(yùn)行前端框架應(yīng)用
- 受沙盒限制,無法直接訪問 Node.js API
3. 預(yù)加載腳本 (Preload Script)
- 連接主進(jìn)程和渲染進(jìn)程的橋梁
- 通過 contextBridge 安全暴露 API
ipcRenderer.invoke 詳解
Electron 中最推薦的進(jìn)程通信方式,提供 Promise 風(fēng)格的異步通信:
?? 方法簽名
?? 參數(shù)說明
?? 工作原理
1. 渲染進(jìn)程調(diào)用 invoke('save-todos', todos)
2. 主進(jìn)程通過 ipcMain.handle('save-todos') 監(jiān)聽請求
3. 主進(jìn)程處理完成后返回結(jié)果
4. 渲染進(jìn)程的 Promise 解析結(jié)果
完整通信流程示例
1. 預(yù)加載腳本 (preload.js)
2. 主進(jìn)程處理 (main.js)
3. 以 Vue 組件調(diào)用為例 (渲染進(jìn)程)
為什么推薦 invoke/handle 模式?
1. 雙向通信:天然的請求/響應(yīng)模型
2. 錯(cuò)誤處理:Promise 的 catch() 可捕獲主進(jìn)程異常
3. 類型安全:TS 可定義嚴(yán)格信道類型
4. 防消息泛濫:自動(dòng)管理請求生命周期





暫無評(píng)論,快來評(píng)論吧!