electron 两个窗口如何通信_Electron中页面之间的通信

Electron的运行环境为Chromium + Node.js, 而Chromium采用的是多进程机制,

也就是说每个页面都是一个独立的进程(渲染进程),因此页面之间是没有直接关系的,

要想进行通信,需要借助主进程作为桥梁。

所以我们首先先来学习主进程和渲染进程怎么通信:

1. 渲染进程---->主进程

发送端:

ipcRenderer.send(channel, data)

接收端:

ipcMain.on(channel, listener)

2. 主进程---->渲染进程

发送端:

① 被动发送

在主进程通过ipcMain.on接收到渲染进程的消息时,可以通过listener函数的event参数得到发送者, 回复消息,

event.sender.send(channel, data)

② 主动发送

win(要发送给的渲染进程窗体对象变量).webContents.send(channel, data)

接收端:

ipcRenderer.on(channel, listener)

有了以上背景知识,页面间通信就很简单了,页面1发送事件给主进程,主进程再发送事件给页面2即可。

注:

在Electron 5.x以后的版本,渲染进程默认没有启用Node.js环境,

在创建窗体时需要指定启用Node环境,否则require命令在渲染进程中将不支持,无法导入electron中的ipcRenderer。

let win = newBrowserWindow({webPreferences: {

nodeIntegration:true}

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值