news 2026/5/10 13:23:19

Electron API 速查与配置模板(2025 年最新版)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Electron API 速查与配置模板(2025 年最新版)

Electron API 速查与配置模板(2025 年最新版)

以下是 Electron 开发中最常用 API 的快速参考表,以及生产级项目推荐的标准配置模板(基于 Electron 33+,Chromium 128+)。

1.核心模块速查表
模块常见 API用途与示例
appapp.whenReady()
app.getPath(name)
app.setLoginItemSettings()
app.on('window-all-closed')
应用生命周期、路径获取、开机启动
示例:app.getPath('userData')获取配置目录
BrowserWindownew BrowserWindow(options)
win.loadURL()
win.webContents.openDevTools()
创建窗口、加载内容、调试
ipcMainipcMain.handle(channel, handler)
ipcMain.on(channel, listener)
主进程接收渲染进程消息(推荐 handle 用于异步)
ipcRendereripcRenderer.invoke(channel, args)
ipcRenderer.send(channel, args)
渲染进程向主进程通信
sessionses.cookies.get/set
ses.setPermissionRequestHandler()
ses.fetch()
Cookie 管理、权限控制、自定义网络请求
netnet.request()
net.fetch()(Electron 25+)
主进程 HTTP/HTTPS 请求(支持系统代理)
safeStoragesafeStorage.encryptString/decryptString()系统级加密(密钥链/Keychain)
nativeImagenativeImage.createFromPath()系统托盘图标、任务栏图标
Traynew Tray(image)
tray.setContextMenu()
系统托盘
MenuMenu.setApplicationMenu()
Menu.buildFromTemplate()
应用菜单、右键菜单
dialogdialog.showOpenDialog()
dialog.showMessageBox()
文件选择、消息弹窗
shellshell.openExternal(url)安全打开外部链接
powerMonitorpowerMonitor.on('suspend')系统休眠/唤醒监听
autoUpdaterautoUpdater.checkForUpdates()自动更新(需配合 electron-updater)
2.生产级 BrowserWindow 配置模板
// main.jsconst{app,BrowserWindow,session}=require('electron');constpath=require('path');functioncreateWindow(){constwin=newBrowserWindow({width:1200,height:800,minWidth:800,minHeight:600,show:false,// 先隐藏,ready-to-show 再显示(防白屏)icon:path.join(__dirname,'build/icon.ico'),// 跨平台图标webPreferences:{preload:path.join(__dirname,'preload.js'),// 必须contextIsolation:true,// 必开(默认 true)nodeIntegration:false,// 必关sandbox:true,// 强烈推荐(渲染进程沙盒)webSecurity:true,// 必开allowRunningInsecureContent:false,experimentalFeatures:false,// backgroundThrottling: false, // 若需后台保持活跃可关闭},backgroundColor:'#fff',// 与前端首屏颜色一致titleBarStyle:'default',// macOS: 'hiddenInset' 可自定义标题栏trafficLightPosition:{x:12,y:12},// macOS 交通灯位置});// 生产环境加载打包后的文件,开发环境加载 Vite 服务器if(process.env.NODE_ENV==='development'){win.loadURL('http://localhost:5173');win.webContents.openDevTools({mode:'detach'});}else{win.loadFile(path.join(__dirname,'dist/index.html'));}win.once('ready-to-show',()=>win.show());// 安全:阻止新窗口弹出,改为浏览器打开win.webContents.setWindowOpenHandler(({url})=>{shell.openExternal(url);return{action:'deny'};});// 安全:阻止导航到外部win.webContents.on('will-navigate',(e,url)=>{if(!url.startsWith('file:')&&!url.includes('localhost')){e.preventDefault();shell.openExternal(url);}});returnwin;}app.whenReady().then(()=>{createWindow();app.on('activate',()=>{if(BrowserWindow.getAllWindows().length===0)createWindow();});});app.on('window-all-closed',()=>{if(process.platform!=='darwin')app.quit();});
3.安全 preload.js 模板(contextBridge)
// preload.jsconst{contextBridge,ipcRenderer}=require('electron');contextBridge.exposeInMainWorld('electronAPI',{// 推荐:白名单渠道invoke:(channel,...args)=>{constvalidChannels=['get-data','save-file','open-dialog'];if(validChannels.includes(channel)){returnipcRenderer.invoke(channel,...args);}thrownewError(`Invalid channel:${channel}`);},on:(channel,listener)=>{constvalidChannels=['update-available','download-progress'];if(validChannels.includes(channel)){ipcRenderer.on(channel,listener);}},removeAllListeners:(channel)=>ipcRenderer.removeAllListeners(channel),});
4.package.json 关键配置模板(electron-builder)
{"build":{"appId":"com.yourcompany.yourapp","productName":"YourApp","directories":{"output":"dist-electron"},"files":["dist/**/*","main/**/*","preload.js"],"extraResources":[{"from":"resources/","to":"resources","filter":["**/*"]}],"win":{"target":["nsis","portable"],"icon":"build/icon.ico"},"mac":{"target":["dmg","zip"],"icon":"build/icon.icns","hardenedRuntime":true,"gatekeeperAssess":false},"linux":{"target":["AppImage","deb"],"icon":"build/icons"},"publish":[{"provider":"github","owner":"yourname","repo":"yourapp"}]}}

这些模板已集成当前最佳实践(沙盒 + 上下文隔离 + Fuses + 安全 IPC)。直接复制到新项目中使用,几乎可直接用于生产。如果需要特定功能(如托盘、自动更新、原生菜单)的完整代码模板,告诉我,我可以继续补充!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 8:25:26

数据湖与数据仓库中的数据治理与质量监控

1. 架构特性与治理挑战 1.1 数据仓库的标准化特性 数据仓库采用严格的Schema-on-Write模式,其结构化特性与测试人员熟悉的规范化流程高度契合: 预先定义的数据模型要求测试人员建立完整的字段校验规则库 ETL流程的可预测性便于设计端到端的质量检查点…

作者头像 李华
网站建设 2026/5/1 9:31:29

Decimation 模型的下采样

一:主要的知识点 1、说明 本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①模型下采样 二:代码及注释 i…

作者头像 李华
网站建设 2026/5/3 0:17:24

为什么你的Open-AutoGLM服务突然中断?可能是证书过期未设提醒!

第一章:Open-AutoGLM服务中断的根源解析Open-AutoGLM作为一款基于大语言模型的自动化推理服务平台,在高并发场景下偶发的服务中断问题逐渐暴露其架构层面的潜在缺陷。通过对近期多次故障日志的聚合分析,核心问题可归结为资源调度失衡、依赖服…

作者头像 李华
网站建设 2026/5/6 20:48:37

为什么90%的团队用不好Open-AutoGLM?你必须知道的3条脱敏规则设计原则

第一章:为什么90%的团队用不好Open-AutoGLM?许多团队在引入 Open-AutoGLM 时寄予厚望,期望其自动化生成高质量语言模型输出的能力能提升开发效率。然而,实际落地过程中,超过九成的团队未能充分发挥其潜力。根本原因往往…

作者头像 李华
网站建设 2026/5/10 9:53:37

【企业级数据防护指南】:Open-AutoGLM脱敏恢复控制的5大应用场景

第一章:Open-AutoGLM脱敏后数据恢复控制的核心价值在数据安全与隐私保护日益重要的今天,Open-AutoGLM 提供了一种创新机制,用于在数据脱敏后实现可控的恢复能力。该机制不仅保障了敏感信息在传输和存储过程中的安全性,还为授权场景…

作者头像 李华