Electron使用esm预加载脚本

411 阅读1分钟
  • preload.mjs
// preload.mjs
import { contextBridge } from 'electron';

contextBridge.exposeInMainWorld('versions', {
  node: () => process.versions.node,
  chrome: () => process.versions.chrome,
  electron: () => process.versions.electron
  // 除函数之外,我们也可以暴露变量
});

  • main.mjs
// main.mjs
iimport { app, BrowserWindow } from 'electron';
import { fileURLToPath } from 'url';
import path from 'path';
const createWindow = () => {
  const __filename = fileURLToPath(import.meta.url); // 获取当前文件绝对路径
  const __dirname = path.dirname(__filename); // 获取当前文件所属文件夹绝对路径
  const win = new BrowserWindow({
    width: 1280,
    height: 720,
    webPreferences: {
      preload: path.join(__dirname, './preload.js') // 核心代码
    }
  });

  win.loadFile('index.html');
};
(async function () {
  await app.whenReady();
  createWindow();
  console.log(process.platform); // win32

  app.on('window-all-closed', function () {
    if (process.platform !== 'darwin') app.quit();
  });
})();