// event.js
//引入必要的依赖
import { app, protocol, BrowserWindow,ipcMain } from 'electron'
import {
createProtocol
} from 'vue-cli-plugin-electron-builder/lib'
const isDevelopment = process.env.NODE_ENV !== 'production'
//监听请求
ipcMain.on('event',async(event, data)=>{
//请求对应的逻辑方法
Fn[data.event](data.data,(cbRes)=>{
//请求回执
event.sender.send(data.event+'After',{
data:cbRes||{},
});
});
});
//新增窗口的变量定义
let windowPageTwo,createdAppProtocol=false;
//方法集合
const Fn = {
dbSet(data,cb){
//db.set(data.key,data.value);
cb({code:1,msg:'Success'});
},
//创建新窗口
createWindow(data,cb){
createWindow(windowPageTwo,data,data+'.html');
}
}
//创建新窗口的具体实现 抽离出来 以便后续可能复用
function createWindow(winVar, devPath, prodPath) {
//新建窗口
winVar = new BrowserWindow({ width: 800, height: 600,
//开启node支持 否则会报require的错
webPreferences: {
nodeIntegration: true,
}
})
//判断运行环境
if (process.env.WEBPACK_DEV_SERVER_URL) {
//开发环境
winVar.loadURL(process.env.WEBPACK_DEV_SERVER_URL + devPath)
if (!process.env.IS_TEST) winVar.webContents.openDevTools()
} else {
//生成环境
if (!createdAppProtocol) {
createProtocol('app')
createdAppProtocol = true
}
winVar.loadURL(`app://./${prodPath}`)
}
winVar.on('closed', () => {
winVar = null
})
}