Electron 提供了兩個ipc(進程間通訊)模塊調用ipcMain和ipcRenderer.javascript
ipcMain模塊主要用於主進程異步傳送信息到renderer線程。在主進程中使用時,它處理從renderer進程(見面)發送的異步和同步的消息。從renderer發送的消息將被推送到該模塊。html
ipcRenderer模塊主要是從renderer線程異步推送信息到main線程當中。它提供了幾種方法,能夠採用同步或異步推送信息給main線程,一樣也能夠接收main線程的回覆。 咱們建立一個main線程和renderer線程,經過上面所提供的模塊進行數據的通訊。 咱們須要建立一個main_process.js文件而且寫入下面的代碼段。java
const { app, BrowserWindow } = require('electron') const url = require('url') const path = require('path') const { ipcMain } = require('electron') let win function createWindow() { win = new BrowserWindow({ width: 800, height: 600 }) win.loadURL(url.format({ pathname: path.join(__dirname, 'index.html'), protocol: 'file:', slashes: true })) } //異步事件處理 ipcMain.on('asynchronous-message', (event, arg) => { console.log(arg) //異步響應數據 event.sender.send('asynchronous-reply', 'async pong') }) //同步的接收事件處理 ipcMain.on('synchronous-message', (event, arg) => { console.log(arg) // 同步事件響應 event.returnValue = 'sync pong' }) app.on('ready', createWindow)
咱們建立一個index.html文件,而且寫入下面的代碼app
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Hello World!</title> </head> <body> <script> const {ipcRenderer} = require('electron') //同步消息的響應及處理 console.log(ipcRenderer.sendSync('synchronous-message', 'sync ping')) //異步消息接收事件處理 ipcRenderer.on('asynchronous-reply', (event, arg) => { console.log(arg) }) //異步發送消息 ipcRenderer.send('asynchronous-message', 'async ping') </script> </body> </html>
運行app異步
$ electron ./main_process.jselectron
命令行輸出async
遊覽器接收到的信息 Sync Pong Async Pongui
命令行下接收到的信息 Sync ping Async Pingurl