Electron为我们提供了2个IPC(进程间通信)模块,称为ipcMain和ipcRenderer。
ipcMain模块用于从主进程与呈现程序进程异步通信。在主进程中使用时,模块处理从呈现程序进程(web页面)发送的异步和同步消息。从呈现程序发送的消息将被发送到此模块。
ipcRenderer模块用于从呈现程序进程与主进程异步通信。它提供了一些方法,以便您可以将同步和异步消息从呈现程序流程(web页面)发送到主流程。你也可以收到来自主进程的回复。
我们将创建一个主进程和一个呈现程序进程,它们将使用上述模块互相发送消息。
用以下内容创建一个
名为 main_process.js的新文件
const{app,BrowserWindow}=require('electron')
const url =require('url')
const path =require('path')
const{ipcMain}=require('electron')
let win
function createWindow(){
win =newBrowserWindow({width:800, height:600})
win.loadURL(url.format ({
pathname: path.join(\_\_dirname,'index.html'),
protocol:'file:',
slashes:true
}))
}
// Event handler for asynchronous incoming messages
ipcMain.on('asynchronous-message',(event, arg)=>{
console.log(arg)
// Event emitter for sendingasynchronous messages
event.sender.send('asynchronous-reply','async pong')
})
// Event handler for synchronous incoming messages
ipcMain.on('synchronous-message',(event, arg)=>{
console.log(arg)
// Synchronous event emmision
event.returnValue ='sync pong'
})
app.on('ready', createWindow)
现在创建一个新 index.html 文件,并在其中添加以下代码。
<!DOCTYPE html>
<html>
<head>
<metacharset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<script>
const{ipcRenderer}= require('electron')
// Synchronous message emmiter andhandler
console.log(ipcRenderer.sendSync('synchronous-message','sync ping'))
// Async message handler
ipcRenderer.on('asynchronous-reply',(event, arg)=>{
console.log(arg)
})
// Async message sender
ipcRenderer.send('asynchronous-message','async ping')
</script>
</body>
</html>
使用以下命令运行应用程序
$ electron ./main\_process.js
上面的命令将生成以下输出
// On your app console
Sync Pong
Async Pong
// On your terminal where you ran the app
Sync Ping
Async Ping
建议不要在呈现程序进程中执行繁重/阻塞任务的计算。总是使用IPC将这些任务委派给主进程。这有助于保持应用程序的速度。
本文翻译转载自www.tutorialspoint.com
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8