91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

怀远县| 革吉县| 兴文县| 油尖旺区| 花莲市| 怀远县| 轮台县| 灵璧县| 赣榆县| 丹巴县| 射阳县| 南雄市| 牟定县| 泽州县| 鄂伦春自治旗| 涞水县| 深水埗区| 孙吴县| 晴隆县| 扶沟县| 金堂县| 成都市| 正阳县| 温泉县| 临夏县| 旬阳县| 梓潼县| 内乡县| 襄垣县| 彰化县| 治县。| 法库县| 福泉市| 宝山区| 乐业县| 延庆县| 灌阳县| 刚察县| 崇明县| 中方县| 潼南县|