可以先去看看之前的https://blog.csdn.net/qq_40816649/article/details/103123143
主进程即electron的main.js。
渲染进程即BrowserWindow对象新建的。
定义一个js文件这里就叫renderer吧,在全局定义一个electron对象用来进行与html进行订阅事件通信。
global.electron = require('electron');
在BrowserWindow中通过node的path插件取到并传入这个js文件,这样在exe中的window上就有electron这个对象了。
new BrowserWindow( width: 750, height: 220,//712 webPreferences: { javascript: true, plugins: true, nodeIntegration: true, // 是否集成 Nodejs webSecurity: false, preload: path.join(__dirname, './renderer.js'),//设置与index.html通信 });
主进程收发订阅事件
接收:引入electron中的ipcMain通过这个api进行接收渲染进程发送的事件并进行相应的处理
发送:需要找到我们定义的这个渲染进程这里我们定义的渲染进程是win所以拿这个名字来进行发送
const { app, BrowserWindow, ipcMain, Menu} = require('electron'); function createWindow() { win = new BrowserWindow(windowConfig); win.loadURL(`file://${__dirname}/index.html`); getDevice() Menu.setApplicationMenu(null)//隐藏顶部菜单 // win.webContents.openDevTools();//开启调试工具 win.on('close', () => {//回收BrowserWindow对象 win = null; }); win.on('maximize', (e) => {//窗口最大化 allowChangeSize = false }) win.on('unmaximize', (e) => {//窗口最小化 allowChangeSize = true }) ipcMain.on('start', (event, args) => {//接受 win.webContents.send('isStart')//发送 connectRTMP(args) }); ipcMain.on('stop', (event, args) => {//接受 console.log('stop') killFluent() }); ipcMain.on('reSize',(e,args) => {//控制window窗口大小 if (!allowChangeSize) return win.setSize(args.width,220 + Number(args.height)) }) } app.on('ready', createWindow);
html的发送和接收
直接在window对象上就能取到这个electron对象进行通信
window.electron.ipcRenderer.send("start",this.radioSet)//发送 window.electron.ipcRenderer.on('isStart', (event, message) => {})//接收
对于底层的东西还是要多去了解一下,这个事件订阅是个非常好的设计包括node,webview通信很多地方都用到了事件订阅。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦