Electron入口文件详解
electron入口文件内容详解,以及nodeIntegration,contextIsolation等参数的用法和解释。
下面是一个基本的electron入口文件结构:
const { app, BrowserWindow } = require('electron');
const path = require('path');
function createWindow() {
const mainWindow = new BrowserWindow({
width: 900,
height: 640,
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
nodeIntegration: false,
contextIsolation: true,
},
});
mainWindow.loadFile(path.join(__dirname, 'index.html'));
}
app.whenReady().then(() => {
createWindow();
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
});
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
const { app, BrowserWindow }
主进程引入app模块,用于控制应用生命周期
主进程引入BrowserWindow模块,用于创建和控制窗口
const mainWindow = new BrowserWindow({})
创建窗口,设置宽高和 webPreferences
mainWindow.loadFile()
使用窗口的 loadFile 方法加载本地页面(相对 __dirname,打包后路径仍正确)
还可以使用窗口的 loadURL 方法加载远程页面mainWindow.loadURL('https://www.baidu.com')
app.whenReady()
应用初始化完成后再建窗口,避免过早访问 BrowserWindow
app.on('activate')
macOS:点击 Dock 图标且当前无窗口时,重新打开一个窗口
app.on('window-all-closed')
所有窗口关闭时退出应用;macOS 通常保留在 Dock,由用户 Cmd+Q 退出
electron