封装 公共 window

const { BrowserWindow } = require('electron')

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
posted @ 2022-02-06 15:33  13522679763-任国强  阅读(33)  评论(0)    收藏  举报