class AppWindow extends BrowserWindow { constructor(config,urlLocation){ const basicConfig = { width:1024, height:680, webPreferences:{ nodeIntegration: true }, show:false, background:'#efefef' }
const finalConfig = { ...basicConfig, ...config} super(finalConfig) this.loadURL(urlLocation) this.once('ready-to-show',()=>{ this.show() }) } }
module.exports = AppWindow ------------------- const { app,BrowserWindow,Menu,ipcMain } = require('electron') const isDev = require('electron-is-dev') const path = require('path')
const menuTemplate = require('./src/menuTemplate') const AppWindow = require('./src/AppWindow')
let mainWindow, settingsWindow;
app.on('ready',() => { const mainWindowConfig = { width:1024, height:680, } const urlLocation = isDev ? 'http://localhost:3000/' : 'dummyurl' mainWindow = new AppWindow(mainWindowConfig,urlLocation) mainWindow.on('closed',()=>{ mainWindow = null })
ipcMain.on('open-settings-window',()=>{
const settingsWindowConfig = { width:500, height:400, parent:mainWindow }
const settingsFileLocation = `file://${path.join(__dirname,'./settings/settings.html')}` settingsWindow = new AppWindow(settingsWindowConfig,settingsFileLocation) settingsWindow.on('closed',()=>{ settingsWindow = null }) })
// 设置菜单 const menu = Menu.buildFromTemplate(menuTemplate) Menu.setApplicationMenu(menu) })
app.allowRendererProcessReuse = true