news 2026/6/23 19:26:41

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/6/23 19:05:45

ColoredElevationMap 根据标量进行颜色映射

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

作者头像 李华
网站建设 2026/6/23 13:42:24

LangFlow B站视频内容创作方向建议

LangFlow B站视频内容创作方向建议 在 AIGC 浪潮席卷各行各业的今天,越来越多开发者和非技术人员开始尝试构建自己的 AI 应用。然而,面对 LangChain 这类功能强大但上手门槛较高的框架,很多人往往被复杂的代码结构、抽象的概念模型&#xff0…

作者头像 李华
网站建设 2026/6/23 13:42:35

LangFlow代码质量检查工具集成(ESLint/Prettier)

LangFlow代码质量检查工具集成(ESLint/Prettier) 在AI应用开发日益普及的今天,LangFlow作为一款基于LangChain生态的可视化低代码平台,正被越来越多团队用于快速构建LLM驱动的工作流。其拖拽式界面极大降低了原型设计门槛&#xf…

作者头像 李华
网站建设 2026/6/23 13:44:57

LangFlow Google排名冲顶可能性分析

LangFlow 能否登顶 Google 搜索榜首?一场关于可视化 AI 工具的 SEO 之战 在生成式 AI 浪潮席卷全球的今天,开发者不再满足于“能不能跑通一个 LLM 应用”,而是追问:“能不能让产品经理也参与进来?”、“能不能十分钟内…

作者头像 李华
网站建设 2026/6/23 13:46:08

TLS 1.0/1.1停用倒计时,Open-AutoGLM如何快速适配TLS 1.2+?

第一章:TLS 1.0/1.1停用背景与Open-AutoGLM的挑战随着网络安全标准的持续演进,主流浏览器和云服务提供商已于2020年起全面停用TLS 1.0和TLS 1.1协议。这些早期加密协议因存在已知漏洞(如POODLE、BEAST)而不再满足现代安全要求。取…

作者头像 李华
网站建设 2026/6/23 7:37:54

基于springboot的家教管理系统的设计与实现

随着在线教育的兴起,家教管理系统成为连接学生、教师和家长的重要平台。本系统采用Java语言开发,结合Spring Boot框架的高效性和MySQL数据库的稳定性,为用户提供了一站式家教服务解决方案。前台界面包括系统首页、家教项目预约、分享与交流、…

作者头像 李华