02.主进程与渲染进程通讯
# 主进程与渲染进程通讯
通过 ipc(进程间通信)模块允许您在主进程和渲染进程之间发送和接收同步
和异步消息
.
这个模块有一个版本可用于这两个进程: ipcMain
和 ipcRenderer
.
# 异步消息
主进程:
const { ipcMain } = require("electron");
// 主进程监听渲染器进程发来的异步消息
ipcMain.on("asynchronous-message", function(event, arg) {
// 主进程向渲染器进程回复异步消息
event.reply("asynchronous-reply", "pong");
});
渲染器进程:
const { ipcRenderer } = require("electron");
const asyncMsgBtn = document.getElementById("async-msg");
asyncMsgBtn.addEventListener("click", function() {
// 渲染器进程向主进程发送异步消息
ipcRenderer.send("asynchronous-message", "ping");
});
// 渲染器进程监听主进程发来的异步消息
ipcRenderer.on("asynchronous-reply", function(event, arg) {
const message = `异步消息回复: ${arg}`;
console.log(message);
});
# 同步消息
主进程:
const { ipcMain } = require("electron");
ipcMain.on("synchronous-message", function(event, arg) {
// 返回同步消息的值
event.returnValue = "pong";
});
渲染器进程:
const { ipcRenderer } = require("electron");
const syncMsgBtn = document.getElementById("sync-msg");
syncMsgBtn.addEventListener("click", function() {
// 发送同步消息
const reply = ipcRenderer.sendSync("synchronous-message", "ping");
const message = `同步消息回复: ${reply}`;
document.getElementById("sync-reply").innerHTML = message;
});