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 |
核心概念
- 上下文隔离(Context Isolation)
- 作用:将网页的 JavaScript 环境与 Electron 的 Node.js 环境隔离
- 默认状态:Electron 12+ 默认启用
- 效果:网页脚本无法直接访问 require 或 process 等 Node.js API
- 预加载脚本(Preload Script)
- 定位:在渲染进程加载网页前执行的脚本
- 权限:同时访问 Node.js 和 DOM API
- 用途:通过 contextBridge 暴露安全接口
- contextBridge 模块
- 核心方法:exposeInMainWorld(apiKey, apiObject)
- 安全规则:只能在预加载脚本中使用每个 exposeInMainWorld 调用最多能传递 2 个参数不能暴露函数之外的复杂对象
dialog
Electron 的 dialog 模块提供了多种系统原生对话框,用于文件操作、信息提示、错误交互等场景
dialog.showOpenDialog
文件选择对话框
dialog.showMessageBox
信息提示对话框
dialog.showSaveDialog
保存文件对话框
dialog.showErrorBox
错误对话框
dialog.showCertificateTrustDialog
证书选择对话框