這篇文章將為大家詳細(xì)講解有關(guān)Electron的原理是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
發(fā)展壯大離不開廣大客戶長(zhǎng)期以來的信賴與支持,我們將始終秉承“誠(chéng)信為本、服務(wù)至上”的服務(wù)理念,堅(jiān)持“二合一”的優(yōu)良服務(wù)模式,真誠(chéng)服務(wù)每家企業(yè),認(rèn)真做好每個(gè)細(xì)節(jié),不斷完善自我,成就企業(yè),實(shí)現(xiàn)共贏。行業(yè)涉及成都紙箱等,在網(wǎng)站建設(shè)公司、營(yíng)銷型網(wǎng)站建設(shè)、WAP手機(jī)網(wǎng)站、VI設(shè)計(jì)、軟件開發(fā)等項(xiàng)目上具有豐富的設(shè)計(jì)經(jīng)驗(yàn)。
在Electron應(yīng)用中,GUI組件僅在主進(jìn)程可用,在輔助進(jìn)程中不可用。那如果想要在輔助進(jìn)程中試用GUI組件,勢(shì)必需要和主進(jìn)程進(jìn)行通信。ipc模塊就是用來實(shí)現(xiàn)主進(jìn)程和輔助進(jìn)程之間的通信。在主進(jìn)程中使用ipcMain模塊進(jìn)行對(duì)輔助進(jìn)程的通信進(jìn)行控制和處理。而在輔助進(jìn)程中,則使用ipcRenderer模塊,來向主進(jìn)程發(fā)送消息或者接受主進(jìn)程的回應(yīng)。接下來我們來講講這兩個(gè)模塊是如何進(jìn)行通信的。
在主進(jìn)程中使用ipcMain模塊進(jìn)行對(duì)輔助進(jìn)程的通信進(jìn)行控制和處理。ipcMain模塊是EventEmitter的實(shí)例。ipcMain模塊有四個(gè)監(jiān)聽方法:
ipcMain.on(channel, listener)
解析:監(jiān)聽事件channel,當(dāng)新消息到達(dá)時(shí),將執(zhí)行監(jiān)聽方法listener(event, args)。
ipcMain.once(channel, listener)
解析:為事件channel添加一個(gè)只執(zhí)行一次的監(jiān)聽方法listener。在第一次消息到大時(shí)會(huì)調(diào)用listener,執(zhí)行完畢馬上刪除listener.
ipcMain.removeListenner(channel, listener)
解析:從特定的channel的監(jiān)聽事件中刪除特定的listener監(jiān)聽者。
ipcMain.removeAllListeners([channel])
解析:本方法可接受傳參channel,若傳參channel,則刪除特定channel的所有監(jiān)聽者。若未進(jìn)行傳參,則刪除所有監(jiān)聽者。
我們需要將event對(duì)象傳遞給callback,event主要有兩個(gè)方法:同步回復(fù)消息和異步回復(fù)消息
event.returnValue
解析:當(dāng)主進(jìn)程需要向輔助進(jìn)程回復(fù)同步消息,則可以使用該方法。
event.sender.send('消息')
解析:當(dāng)主進(jìn)程需要向輔助進(jìn)程回復(fù)異步消息,則可以使用本方法。
我們還是拿昨天的項(xiàng)目來繼續(xù)用,我們來看看主進(jìn)程和輔助進(jìn)程之間如何進(jìn)行通信的:
首先主進(jìn)程我們說過了就是index.js文件,我們?cè)诶锩媸褂?strong>ipcMain模塊對(duì)消息進(jìn)行處理:
const ipcMain = require('electron').ipcMain;
ipcMain.on('test-message', function (event, arg) {
event.sender.send('test-reply', '這是主進(jìn)程');
});
ipcMain.on('test-message', function (event, arg) {
event.returnValue = '這是主進(jìn)程';
});
輔助進(jìn)程目前只有一個(gè)index.html頁面,我們?cè)诶锩媸褂?strong>ipcRenderer對(duì)消息進(jìn)行處理
const ipcRenderer = require('electron').ipcRenderer;
console.log(ipcRenderer.sendSync('test-message', '這是輔助進(jìn)程'));
ipcRenderer.on('test-reply', function(event, arg) {
console.log(arg);
});
ipcRenderer.send('test-message', '這是輔助進(jìn)程');
我們使用electron .命令測(cè)試一下效果:
可以看到主進(jìn)程成功進(jìn)行通信了,那接下來我們來講講在輔助進(jìn)程中ipcRenderer具體的使用方法吧。
輔助進(jìn)程其實(shí)就相當(dāng)于我們一個(gè)個(gè)的html文件,可以使用ipcRenderer來接受和發(fā)送消息以便與主進(jìn)程進(jìn)行交互。
ipcRenderer模塊用來監(jiān)聽事件的有四個(gè)方法:
ipcRenderer.on(channel, listener)
ipcRenderer.once(channel, listener)
ipcRenderer.removeListenner(channel, listener)
ipcRenderer.removeAllListeners([channel])
這四個(gè)方法的含義和ipcMain一致,這里就不進(jìn)行重復(fù)解釋了。發(fā)送消息ipcRenderer一樣有發(fā)送同步消息和發(fā)送異步消息兩個(gè)方法:
ipcRenderer.send(channel, args)
解析:輔助進(jìn)程使用該方法向主進(jìn)程發(fā)送異步消息。主進(jìn)程使用ipcMain模塊對(duì)異步消息進(jìn)行處理。
ipcRenderer.sendSync(channel, args)
解析:輔助進(jìn)程使用該方法向主進(jìn)程發(fā)送同步消息。主進(jìn)程使用ipcMain模塊對(duì)同步消息進(jìn)行處理然后通過event.returnValue進(jìn)行相應(yīng)消息給輔助進(jìn)程。在這里我的建議是盡量少用同步消息,因?yàn)榘l(fā)送同步消息會(huì)阻塞整個(gè)頁面渲染進(jìn)程,對(duì)于用戶體驗(yàn)來說是非常糟糕的一件事情。
ipcRenderer其實(shí)還有一個(gè)方法用來發(fā)送消息:
ipcRenderer.sendToHost(channel, args)
關(guān)于Electron的原理是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
網(wǎng)頁題目:Electron的原理是什么
文章網(wǎng)址:http://chinadenli.net/article0/gidooo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、網(wǎng)站營(yíng)銷、靜態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作、搜索引擎優(yōu)化、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)