electron 各种类和模块汇总

创建时间:2025-05-10 16:55
长度:2438
浏览:0
评论:0

app

const { app } = require('electron');

   app 是 Electron 的主进程对象,用于管理整个应用程序的生命周期。它控制应用从启动到退出的全过程。

   主要功能:

       ✅ 响应应用级事件(如启动、退出、激活等)

       ✅ 获取应用信息(版本号、安装路径等)

       ✅ 控制应用行为(阻止退出、隐藏到托盘等)


   典型案例

const { app } = require('electron');

// 监听应用准备就绪事件(启动入口)
app.on('ready', () => {
  console.log('应用启动了!');
});

// 监听所有窗口关闭事件(Mac 特殊处理)
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit(); // 非 Mac 平台直接退出
  }
});


BrowserWindow

const { BrowserWindow } = require('electron');

   BrowserWindow 是一个用于创建和控制浏览器窗口的类,每个实例代表一个独立的窗口。


   主要功能:

       ✅ 创建新窗口(设置大小、标题、样式等)

       ✅ 加载网页内容(本地 HTML 或远程 URL)

       ✅ 控制窗口行为(最小化、最大化、关闭等)


   典型案例

const { BrowserWindow } = require('electron');

// 创建窗口实例
const win = new BrowserWindow({
  width: 800,
  height: 600,
  webPreferences: {
    nodeIntegration: true // 允许网页使用 Node.js
  }
});

// 加载本地 HTML 文件
win.loadFile('index.html');

// 打开开发者工具
win.webContents.openDevTools();

   

   创建一个子窗口

   子窗口可以依赖一个父窗口,主要是指定parent

const { app, BrowserWindow } = require('electron');

function createWindow () {
    let win = new BrowserWindow({
        width: 800,
        height: 600,
    })

    win.loadFile('index.html');
    return win;
}

function createChildWindow(parent) {
    let win = new BrowserWindow({
        width: 400,
        height: 200,

        // 指定父窗口
        parent
    });
    win.loadFile('child.html')
    return;
}

app.on('ready', () => {
    let parent = createWindow();
    createChildWindow(parent);
})


contextBridge

Electron 中,contextBridge 是一个关键的安全模块,用于安全地暴露主进程的 API 到渲染进程。它的核心目的是在保持上下文隔离(Context Isolation)的前提下,实现主进程和渲染进程之间的安全通信。

   这个章节通信的说明: 链接

   为什么需要 contextBridge?

   

场景 没有 contextBridge 的风险使用 contextBridge 的优势
渲染进程需要调用 Node.js 功能直接暴露 require 会导致安全漏洞只暴露白名单方法,保护核心 API
主进程与渲染进程通信IPC 通信代码冗长,容易泄露敏感逻辑提供类型安全的 API 通道
加载第三方网页内容恶意代码可能通过 window 对象攻击系统严格隔离网页脚本与 Electron/Native API


   

核心概念

  1. 上下文隔离(Context Isolation)
    • 作用:将网页的 JavaScript 环境与 Electron 的 Node.js 环境隔离
    • 默认状态:Electron 12+ 默认启用
    • 效果:网页脚本无法直接访问 require 或 process 等 Node.js API
  2. 预加载脚本(Preload Script)
    • 定位:在渲染进程加载网页前执行的脚本
    • 权限:同时访问 Node.js 和 DOM API
    • 用途:通过 contextBridge 暴露安全接口
  3. contextBridge 模块
    • 核心方法:exposeInMainWorld(apiKey, apiObject)
    • 安全规则:只能在预加载脚本中使用每个 exposeInMainWorld 调用最多能传递 2 个参数不能暴露函数之外的复杂对象



dialog

   Electron 的 dialog 模块提供了多种系统原生对话框,用于文件操作、信息提示、错误交互等场景


   dialog.showOpenDialog

       文件选择对话框

   dialog.showMessageBox

       信息提示对话框

   dialog.showSaveDialog

       保存文件对话框

   dialog.showErrorBox

       错误对话框

   dialog.showCertificateTrustDialog

       证书选择对话框




评论(共0条)