news 2026/4/17 10:16:03

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/4/18 3:49:29

Playwright 开发环境配置

Playwright 开发环境配置指南(2025 年最新版) Playwright 的开发环境配置非常简单,尤其推荐使用 Visual Studio Code (VS Code) 作为 IDE,因为它有官方扩展支持,能提供测试运行、调试、录制、Trace 查看等一体化体验。…

作者头像 李华
网站建设 2026/4/16 10:41:25

Electron 进阶主题

Electron 进阶主题 掌握 Electron 基础后,进阶主题聚焦于生产级应用的核心挑战:安全性强化、性能极致优化、进程模型高级管理、原生集成 和 现代架构实践。以下基于 2025 年最新官方文档和社区最佳实践(Electron 33 版本,Chromiu…

作者头像 李华
网站建设 2026/4/15 21:13:02

ClosedSurface 检测模型是否水密

一:主要的知识点 1、说明 本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①如何判定模型是否为封闭模型 二&#xff…

作者头像 李华
网站建设 2026/4/17 23:33:16

LangFlow教育培训合作计划招募启事

LangFlow教育培训合作计划招募启事 在人工智能技术加速落地的今天,如何让非编程背景的学生也能快速上手大语言模型(LLM)应用开发,已成为高校和培训机构面临的核心挑战。传统基于代码的教学方式虽然严谨,但对初学者而言…

作者头像 李华
网站建设 2026/4/16 6:24:35

LangFlow报警规则设定:何时通知运维人员?

LangFlow报警规则设定:何时通知运维人员? 在AI应用快速落地的今天,一个看似简单的智能客服流程,可能因为某次模型调用超时或API密钥失效,在用户毫无察觉的情况下持续“带伤运行”数小时。等到问题被发现时&#xff0c…

作者头像 李华