摘要:對(duì)于主進(jìn)程和渲染進(jìn)程之間的通信,使用是很方便的。但是渲染進(jìn)程之間呢哈哈,我這個(gè)碼農(nóng)看來(lái)又踩到一個(gè)坑了。方案一使用全局共享屬性但不具備事件機(jī)制,沒(méi)有實(shí)質(zhì)的通信功能。方案二利用主進(jìn)程做消息中轉(zhuǎn)此方案還是很好的。
菜鳥(niǎo)的 Electron 踩坑集錦。
對(duì)于 主進(jìn)程和渲染進(jìn)程之間的通信,使用 IPC 是很方便的。但是渲染進(jìn)程之間呢? 哈哈,我這個(gè)碼農(nóng)看來(lái)又踩到一個(gè)坑了。
方案一:使用全局共享屬性:
// In the main process. global.sharedObject = { someProperty: "default value" } // In page 1. require("electron").remote.getGlobal("sharedObject").someProperty = "new value" // In page 2. console.log(require("electron").remote.getGlobal("sharedObject").someProperty)
但不具備事件機(jī)制,沒(méi)有實(shí)質(zhì)的通信功能。 當(dāng)然說(shuō)到這里就想起了 Node 中的全局對(duì)象了。
https://electron.atom.io/docs...
方案二利用主進(jìn)程做消息中轉(zhuǎn): 此方案還是很好的。
// In the main process. ipcMain.on("ping-event", (event, arg) => { yourWindow.webContents.send("pong-event", "something"); } // In renderer process // 1 ipcRenderer.send("ping-event", (event, arg) => { // do something } ) // 2 ipcRenderer.on("pong-event", (event, arg) => { // do something } )方案三
利用 remote 接口直接獲取渲染進(jìn)程發(fā)送消息:
// renderer process // get Window by ID remote.BrowserWindow.fromId(winId).webContents.send("ping", "someThing");
渲染進(jìn)程獲取 ID 就有多種方法了:
第一種: 通過(guò) global 設(shè)置和獲取
第一種是: 主進(jìn)程創(chuàng)建事件,發(fā)送信息
// main process win1.webContents.send("distributeIds",{ win2Id : win2.id }); win2.webContents.send("distributeIds",{ win1Id : win1.id });
第三種: 寫(xiě)個(gè)文件什么的都可以,方法還是多種多樣的。
參考:
https://github.com/electron/e...
https://github.com/electron/e...
https://juejin.im/entry/58869...
需要了解的 API:
https://electron.atom.io/docs...
https://electron.atom.io/docs...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/82803.html
摘要:主進(jìn)程在里,運(yùn)行里腳本的進(jìn)程被稱為主進(jìn)程。渲染進(jìn)程由于使用來(lái)展示頁(yè)面,所以的多進(jìn)程結(jié)構(gòu)也被充分利用。每個(gè)的頁(yè)面都在運(yùn)行著自己的進(jìn)程,這樣的進(jìn)程我們稱之為渲染進(jìn)程。在一般瀏覽器中,網(wǎng)頁(yè)通常會(huì)在沙盒環(huán)境下運(yùn)行,并且不允許訪問(wèn)原生資源。 主進(jìn)程 在 Electron 里,運(yùn)行 package.json 里 main 腳本的進(jìn)程被稱為主進(jìn)程。在主進(jìn)程運(yùn)行的腳本可以以創(chuàng)建 web 頁(yè)面的形式展示...
摘要:為了能使不同的進(jìn)程互相訪問(wèn)資源并進(jìn)行協(xié)調(diào)工作,才有了進(jìn)程間通信。此時(shí),就需要與渲染進(jìn)程通信了。發(fā)消息,渲染進(jìn)程收消息內(nèi)部使用來(lái)發(fā)消息。 作者:鐘離,酷家樂(lè)PC客戶端負(fù)責(zé)人原文地址:https://webfe.kujiale.com/electron-ku-jia-le-ke-hu-duan-kai-fa-shi-jian-fen-xiang-jin-cheng-tong-xin/酷家...
摘要:為了能使不同的進(jìn)程互相訪問(wèn)資源并進(jìn)行協(xié)調(diào)工作,才有了進(jìn)程間通信。此時(shí),就需要與渲染進(jìn)程通信了。發(fā)消息,渲染進(jìn)程收消息內(nèi)部使用來(lái)發(fā)消息。 作者:鐘離,酷家樂(lè)PC客戶端負(fù)責(zé)人原文地址:https://webfe.kujiale.com/electron-ku-jia-le-ke-hu-duan-kai-fa-shi-jian-fen-xiang-jin-cheng-tong-xin/酷家...
摘要:為了能使不同的進(jìn)程互相訪問(wèn)資源并進(jìn)行協(xié)調(diào)工作,才有了進(jìn)程間通信。此時(shí),就需要與渲染進(jìn)程通信了。發(fā)消息,渲染進(jìn)程收消息內(nèi)部使用來(lái)發(fā)消息。 作者:鐘離,酷家樂(lè)PC客戶端負(fù)責(zé)人原文地址:https://webfe.kujiale.com/electron-ku-jia-le-ke-hu-duan-kai-fa-shi-jian-fen-xiang-jin-cheng-tong-xin/酷家...
摘要:當(dāng)一個(gè)實(shí)例被銷毀后,相應(yīng)的渲染進(jìn)程也會(huì)被終止。之所以命名為,主要是為了與主進(jìn)程這個(gè)概念對(duì)應(yīng)。部分在事件觸發(fā)后才能使用。當(dāng)全部窗口關(guān)閉時(shí)退出。主進(jìn)程接收到消息并處理之后,會(huì)返回處理結(jié)果。 簡(jiǎn)介 Electron 是一個(gè)可以使用 Web 技術(shù)如 JavaScript、HTML 和 CSS 來(lái)創(chuàng)建跨平臺(tái)原生桌面應(yīng)用的框架。借助 Electron,我們可以使用純 JavaScript 來(lái)調(diào)用豐...
閱讀 1094·2021-11-24 09:39
閱讀 2797·2021-09-26 09:55
閱讀 18341·2021-08-23 09:47
閱讀 3664·2019-08-30 15:52
閱讀 921·2019-08-29 13:49
閱讀 1078·2019-08-23 18:00
閱讀 913·2019-08-23 16:42
閱讀 1738·2019-08-23 14:28