const { app, BrowserWindow } = require('electron');
const path = require('path');
// 保持一个对于 window 对象的全局引用,不然的话,当 JavaScript 被垃圾收集时,窗口会被自动关闭
let win;
// 创建窗口函数
function createWindow() {
// 创建浏览器窗口
win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
// 加载预设的插件目录
preload: path.join(__dirname, 'preload.js')
}
});
// 加载应用的 index.html 文件
win.loadFile('index.html');
// 打开开发者工具(可选)
// win.webContents.openDevTools();
}
// 当 Electron 完成初始化并准备创建浏览器窗口时调用这个函数
app.whenReady().then(createWindow);
// 所有窗口关闭时退出应用(不适用于 macOS)
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
// 应用被激活时调用(仅在 macOS 上)
app.on('activate', () => {
// 在 macOS 上,点击 Dock 图标并且没有其他窗口打开时通常会重新创建一个窗口
if (win === null) {
createWindow();
}
});
这段代码是一个 Electron 应用程序的主进程入口文件示例。它展示了如何使用 Electron API 来创建一个新的浏览器窗口,并加载一个 index.html 文件。同时,它还处理了窗口的生命周期事件,确保应用在所有窗口关闭时可以正确退出,并在 macOS 上正确处理应用激活事件。这个示例为开发者提供了一个良好的起点,来构建他们自己的 Electron 应用程序。