详见代码中的注释
src\main\index.js
import { app, BrowserWindow } from 'electron'
if (process.env.NODE_ENV !== 'development') {
global.__static = require('path').join(__dirname, '/static').replace(/\\/g, '\\\\')
}
// 开发模式的话走webpack-dev-server的url
const winURL = process.env.NODE_ENV === 'development'
? `http://localhost:9080`
: `file://${__dirname}/index.html`
let mainWindow
// 创建窗口
function createWindow() {
// 创建主窗口的配置信息
const options = {
useContentSize: true,
height: 563,
width: 1000,
minWidth: 800, //宽最小值
minHeight: 400, //高最小值
// fullscreenable: true, // 是否允许全屏
center: true, // 是否出现在屏幕居中的位置
frame: true, //是否显示边框、标题栏和菜单栏;默认为true
show: true, //隐藏页面(程序只在后台运行); 默认为true
// backgroundColor: '#fff', // 背景色,用于transparent和frameless窗口
titleBarStyle: 'hidden', // 标题栏的样式,有hidden、hiddenInset、customButtonsOnHover等,为hidden时隐藏系统默认的titlebar
resizable: true, // 是否允许拉伸大小,为false时,最大化按钮会被禁用
transparent: false, // 是否是透明窗口(仅macOS)
vibrancy: 'ultra-dark', // 窗口模糊的样式(仅macOS)
webPreferences: {
nodeIntegration: true, //在网页中集成Node
enableRemoteModule: true, // 打开remote模块
webSecurity: false,
backgroundThrottling: false, // 当页面被置于非激活窗口的时候是否停止动画和计时器
}
}
// 针对windows平台做出不同的配置
if (process.platform === 'win32') {
options.show = true // 创建即展示
options.frame = true // 创建一个frameless窗口
options.backgroundColor = 'white' // 背景色
}
// 创建主窗口
mainWindow = new BrowserWindow(options)
var electron = require('electron')
// 注册全局快捷键 ctrl+e
electron.globalShortcut.register('ctrl+e', () => {
// 在主窗口中,加载网页 'https://jspang.com'
mainWindow.loadURL('https://jspang.com')
})
// 开启devTool
// mainWindow.webContents.openDevTools()
// 加载窗口的URL -> 来自renderer进程的页面
// mainWindow.loadURL(winURL)
mainWindow.loadURL("http://106.12.123.173/#/dic")
mainWindow.maximize()
// 关闭devTool
mainWindow.webContents.closeDevTools()
mainWindow.on('closed', () => {
mainWindow = null
})
}
// 加载自定义菜单
const menuTemplate = [{
label: '主页',
click() {
// 页面跳转方式一(推荐)
mainWindow.webContents.send('href', '/index');
// 页面跳转方式二
// mainWindow.loadURL(winURL+'#/index')
}
},
{
label: '测试页',
submenu: [
{
label: '第1页',
click() {
mainWindow.webContents.send('href', '/page1');
}
},
{
label: '第2页',
click() {
mainWindow.webContents.send('href', '/page2');
}
}
]
}
];
var Menu = require('electron').Menu;
Menu.setApplicationMenu( Menu.buildFromTemplate([]));
// 当electron完成初始化后触发
app.on('ready', createWindow)
// 所有窗口都关闭的时候触发,在windows和linux里,所有窗口都退出的时候通常是应用退出的时候
app.on('window-all-closed', () => {
// 当操作系统不是darwin(macOS)时
if (process.platform !== 'darwin') {
// 退出应用
app.quit()
}
})
// (仅macOS)当应用处于激活状态时
app.on('activate', () => {
if (mainWindow === null) {
createWindow()
}
})