中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

迁安市| 固阳县| 留坝县| 株洲县| 博客| 萨嘎县| 中宁县| 广灵县| 安多县| 郎溪县| 曲松县| 龙江县| 岗巴县| 镶黄旗| 浦北县| 永昌县| 尉氏县| 当阳市| 区。| 甘谷县| 竹北市| 霍林郭勒市| 楚雄市| 乳源| 绵竹市| 云浮市| 栾川县| 德安县| 通河县| 西安市| 平邑县| 黄大仙区| 东兰县| 都昌县| 宁陕县| 姜堰市| 临城县| 夹江县| 孝义市| 进贤县| 全州县|