1. 程式人生 > 實用技巧 >Electron 主程序與渲染程序之間的通 信(同步通訊、非同步通訊)

Electron 主程序與渲染程序之間的通 信(同步通訊、非同步通訊)

有時候我們想在渲染程序中通過一個事件去執行主程序裡面的方法。或者在渲染程序中通知 主程序處理事件,主程序處理完成後廣播一個事件讓渲染程序去處理一些事情。這個時候就 用到了主程序和渲染程序之間的相互通訊。 Electron 主程序,和渲染程序的通訊主要用到兩個模組:ipcMain 和 ipcRenderer ipcMain:當在主程序中使用時,它處理從渲染器程序(網頁)傳送出來的非同步和同步資訊, 當然也有可能從主程序向渲染程序傳送訊息。 ipcRenderer: 使用它提供的一些方法從渲染程序 (web 頁面) 傳送同步或非同步的訊息到主 程序。 也可以接收主程序回覆的訊息。 場景 1:渲染程序給主程序傳送非同步訊息:
//渲染程序
 const { ipcRenderer } = require('electron') i
pcRenderer.send('msg',{name:'張三'}); //非同步

主程序:

//主程序 
const { ipcMain } = require('electron'); 
ipcMain.on(''msg'',(event,arg) => { 

})
場景 2:渲染程序給主程序傳送非同步訊息,主程序接收到非同步訊息以後通知渲染程序
//渲染程序 
const { ipcRenderer } = require('electron') 
ipcRenderer.send(
'msg',{name:'張三'}); //非同步
//主程序
const { ipcMain } = require('electron'); 
ipcMain.on(''msg'',(event,arg) => { event.sender.send('reply', 'pong'); })
//渲染程序
 const { ipcRenderer } = require('electron')
 ipcRenderer.on('reply', function(event, arg) { 
    console.log(arg); // prints "pong" }
);    
場景 3:渲染程序給主程序傳送同步訊息:
//
渲染程序 const { ipcRenderer } = require('electron') const msg = ipcRenderer.sendSync('msg-a'); console.log(msg)
//主程序 
ipcMain.on('msg-a',(event)=> { event.returnValue = 'hello'; })