返回博客列表

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

相关推荐