亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Electron的原理是什么

發布時間:2021-06-23 17:31:00 來源:億速云 閱讀:689 作者:Leah 欄目:大數據

這篇文章將為大家詳細講解有關Electron的原理是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

        在Electron應用中,GUI組件僅在主進程可用,在輔助進程中不可用。那如果想要在輔助進程中試用GUI組件,勢必需要和主進程進行通信。ipc模塊就是用來實現主進程和輔助進程之間的通信。在主進程中使用ipcMain模塊進行對輔助進程的通信進行控制和處理。而在輔助進程中,則使用ipcRenderer模塊,來向主進程發送消息或者接受主進程的回應。接下來我們來講講這兩個模塊是如何進行通信的。

        在主進程中使用ipcMain模塊進行對輔助進程的通信進行控制和處理。ipcMain模塊是EventEmitter的實例。ipcMain模塊有四個監聽方法:

ipcMain.on(channel, listener)

解析:監聽事件channel,當新消息到達時,將執行監聽方法listener(event, args)

ipcMain.once(channel, listener)

解析:為事件channel添加一個只執行一次的監聽方法listener。在第一次消息到大時會調用listener,執行完畢馬上刪除listener.

ipcMain.removeListenner(channel, listener)

解析:從特定的channel的監聽事件中刪除特定的listener監聽者。

ipcMain.removeAllListeners([channel])

解析:本方法可接受傳參channel,若傳參channel,則刪除特定channel的所有監聽者。若未進行傳參,則刪除所有監聽者。

我們需要將event對象傳遞給callbackevent主要有兩個方法:同步回復消息和異步回復消息

event.returnValue

解析:當主進程需要向輔助進程回復同步消息,則可以使用該方法。

event.sender.send('消息')

解析:當主進程需要向輔助進程回復異步消息,則可以使用本方法。

我們還是拿昨天的項目來繼續用,我們來看看主進程和輔助進程之間如何進行通信的:

首先主進程我們說過了就是index.js文件,我們在里面使用ipcMain模塊對消息進行處理:

const ipcMain = require('electron').ipcMain;
ipcMain.on('test-message', function (event, arg) {    event.sender.send('test-reply', '這是主進程');});
ipcMain.on('test-message', function (event, arg) {    event.returnValue = '這是主進程';});

輔助進程目前只有一個index.html頁面,我們在里面使用ipcRenderer對消息進行處理

const ipcRenderer = require('electron').ipcRenderer;
console.log(ipcRenderer.sendSync('test-message', '這是輔助進程'));ipcRenderer.on('test-reply', function(event, arg) {  console.log(arg); });ipcRenderer.send('test-message', '這是輔助進程');

我們使用electron .命令測試一下效果:

Electron的原理是什么

可以看到主進程成功進行通信了,那接下來我們來講講在輔助進程中ipcRenderer具體的使用方法吧。

輔助進程其實就相當于我們一個個的html文件,可以使用ipcRenderer來接受和發送消息以便與主進程進行交互。

ipcRenderer模塊用來監聽事件的有四個方法:

ipcRenderer.on(channel, listener)
ipcRenderer.once(channel, listener)
ipcRenderer.removeListenner(channel, listener)
ipcRenderer.removeAllListeners([channel])

這四個方法的含義和ipcMain一致,這里就不進行重復解釋了。發送消息ipcRenderer一樣有發送同步消息和發送異步消息兩個方法:

ipcRenderer.send(channel, args)

解析:輔助進程使用該方法向主進程發送異步消息。主進程使用ipcMain模塊對異步消息進行處理。

ipcRenderer.sendSync(channel, args)

解析:輔助進程使用該方法向主進程發送同步消息。主進程使用ipcMain模塊對同步消息進行處理然后通過event.returnValue進行相應消息給輔助進程。在這里我的建議是盡量少用同步消息,因為發送同步消息會阻塞整個頁面渲染進程,對于用戶體驗來說是非常糟糕的一件事情。

ipcRenderer其實還有一個方法用來發送消息:

ipcRenderer.sendToHost(channel, args)

關于Electron的原理是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平昌县| 灌阳县| 麻栗坡县| 黄骅市| 自治县| 临沧市| 仁布县| 金阳县| 揭东县| 信宜市| 福建省| 闵行区| 永寿县| 沂南县| 溧水县| 会泽县| 大邑县| 大同县| 县级市| 宜兴市| 浙江省| 垫江县| 乐都县| 景东| 宝山区| 苍梧县| 六盘水市| 托克逊县| 赤城县| 车致| 冀州市| 观塘区| 永平县| 炉霍县| 成武县| 来安县| 修水县| 安新县| 聂荣县| 新邵县| 长阳|