我们在做Electron
项目时,会遇到主进程与渲染进程通信的场景,那么具体怎么实现呢,我们今天用一个demo
来表现下通信过程,核心业务为:项目过多,用户添加项目目标文件夹到列表,进而对项目进行统一管理,我们这里提供2种方式
效果图:
方式一:
main.js
主进程,创建一个顶部菜单,打开一个文件夹,进而通知渲染进程
const {
app, BrowserWindow, ipcMain, Menu, dialog, protocol } = require('electron')
let mainWindow // 保存当前的主窗口回调,用于发布消息
// 创建菜单列表,添加自定义菜单,并且快捷键为ctrl + w
let menuTemplate = [
// 一级菜单
{
label: "文件",
role: 'fileMenu',
},
{
label: "视图",
role: 'viewMenu'
},
{
label: '窗口',
role: 'windowMenu'
},
{
label: '添加项目',
click: () => {
handle_click()
},
accelerator: 'ctrl + w'
}
];
// 用于构建MenuItem
let menuBuilder = Menu.buildFromTemplate(menuTemplate);
// setApplicationMenu 在macOS上将 menu设置成应用内菜单 在windows和Linux上,menu 将会被设置成窗口顶部菜单
Menu.setApplicationMenu(menuBuilder);
function createWindow() {