了解一下 Electron 中的 ipcRenderer
基本上無害
發(fā)布于 云南 2025-05-29 · 3815瀏覽 3贊

在 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)管理請求生命周期

基本上無害
火星宛如雪花,從42號(hào)有軌電車車頂?shù)墓渭娖魃巷w落而下。
瀏覽 3815
3
相關(guān)推薦
最新評(píng)論
贊過的人 3
評(píng)論加載中...

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