news 2026/3/23 21:37:42

HoRain云--Electron开发速查手册与配置模板

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--Electron开发速查手册与配置模板

🎬 HoRain云小助手:个人主页

🔥 个人专栏: 《Linux 系列教程》《c语言教程》

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

🔧 核心 API 速查表

🚀 生产级项目配置模板

主进程 (main.js) 核心配置

安全的预加载脚本 (preload.js) 模板

🔄 进程间通信 (IPC) 模式详解

💡 进阶模块与实用技巧


Electron 的魅力在于让开发者能使用 Web 技术构建功能强大的桌面应用。下面这份速查手册和配置模板,希望能帮你快速上手并规避常见陷阱。

🔧 核心 API 速查表

下表汇总了 Electron 开发中最常用的核心 API 及其用途 。

模块

关键 API / 类

主要用途与场景

备注

应用生命周期

app

控制应用启动、退出等核心事件 。

应用的基石

app.whenReady()

应用初始化完成,通常在此创建窗口 。

替代旧的ready事件监听

app.on('window-all-closed')

监听所有窗口关闭事件,实现跨平台退出逻辑 。

macOS 通常不退出应用

app.quit()

退出应用 。

窗口管理

BrowserWindow

创建和控制应用窗口 。

核心中的核心

win.loadURL()/win.loadFile()

为窗口加载网页内容(远程或本地)。

win.webContents.openDevTools()

打开开发者工具,用于调试 。

进程通信

ipcMain

在主进程中处理来自渲染进程的请求 。

应用逻辑的桥梁

ipcRenderer

在渲染进程中向主进程发送消息 。

contextBridge

在预加载脚本中安全地暴露 API 给渲染进程 。

安全关键

系统交互

dialog

显示系统原生对话框(打开/保存文件、消息提示)。

提升原生体验

shell

使用默认程序打开外部链接、文件或文件夹 。

Tray

创建系统托盘图标 。

Menu

设置应用菜单和上下文菜单 。

系统集成

clipboard

读写系统剪贴板 。

增强交互能力

Notification

显示系统原生通知 。

powerMonitor

监听系统电源状态(如休眠/唤醒)。

net/net.fetch

在主进程发起网络请求(支持系统代理)。

🚀 生产级项目配置模板

以下是一个融合了现代 Electron 最佳实践(特别是安全性)的主进程和预加载脚本配置模板,基于 Electron 33 。

主进程 (main.js) 核心配置
const { app, BrowserWindow, shell, session } = require('electron'); const path = require('path'); function createWindow() { const mainWindow = new BrowserWindow({ width: 1200, height: 800, minWidth: 800, minHeight: 600, show: false, // 先隐藏,防止初始白屏 icon: path.join(__dirname, 'build/icon.ico'), // 跨平台图标 webPreferences: { preload: path.join(__dirname, 'preload.js'), // 【必须】指定预加载脚本 contextIsolation: true, // 【必须】启用上下文隔离 nodeIntegration: false, // 【必须】禁用 Node.js 集成 sandbox: true, // 【推荐】启用渲染进程沙盒 webSecurity: true, // 【必须】启用 Web 安全策略 }, backgroundColor: '#fff', // 与前端首屏背景色一致 }); // 根据环境加载内容 if (process.env.NODE_ENV === 'development') { mainWindow.loadURL('http://localhost:5173'); mainWindow.webContents.openDevTools({ mode: 'detach' }); } else { mainWindow.loadFile('dist/index.html'); } // 窗口准备就绪后再显示,提升用户体验 mainWindow.once('ready-to-show', () => { mainWindow.show(); }); // 安全地处理新窗口及外部链接 mainWindow.webContents.setWindowOpenHandler(({ url }) => { shell.openExternal(url); return { action: 'deny' }; }); // 阻止导航到非安全来源 mainWindow.webContents.on('will-navigate', (event, navigationUrl) => { if (!navigationUrl.startsWith('file:') && !navigationUrl.includes('localhost')) { event.preventDefault(); shell.openExternal(navigationUrl); } }); } app.whenReady().then(createWindow); // 跨平台窗口管理 app.on('window-all-closed', () => { if (process.platform !== 'darwin') app.quit(); }); app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) createWindow(); });
安全的预加载脚本 (preload.js) 模板
const { contextBridge, ipcRenderer } = require('electron'); // 定义允许渲染进程使用的 API 白名单 const validInvokeChannels = ['get-data', 'save-file', 'open-dialog']; const validOnChannels = ['update-available', 'download-progress']; // 通过 contextBridge 安全地暴露 API 到渲染进程的全局对象上 contextBridge.exposeInMainWorld('electronAPI', { // 用于调用主进程方法并获取结果(推荐) invoke: (channel, ...args) => { if (validInvokeChannels.includes(channel)) { return ipcRenderer.invoke(channel, ...args); } throw new Error(`Invalid IPC channel: ${channel}`); }, // 用于监听主进程发送的消息 on: (channel, listener) => { if (validOnChannels.includes(channel)) { ipcRenderer.on(channel, listener); } }, // 清理监听器 removeAllListeners: (channel) => { ipcRenderer.removeAllListeners(channel); }, });

🔄 进程间通信 (IPC) 模式详解

掌握了 API 和配置,我们来深入看看连接主进程和渲染进程的几种核心通信模式 。

  1. 渲染进程 → 主进程(单向)

    适用于通知主进程执行某个操作,无需等待结果。

  2. 渲染进程 → 主进程(双向)

    最常用模式,调用主进程功能并等待返回值。

  3. 主进程 → 渲染进程

    用于主进程主动向渲染进程推送消息(如菜单点击、状态更新)。

💡 进阶模块与实用技巧

希望这份指南能成为你 Electron 开发路上的得力助手!如果你在实现某个具体功能时遇到挑战,我很乐意和你一起探讨更深入的解决方案。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

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

零样本分类案例详解:社交媒体情感分析系统

零样本分类案例详解:社交媒体情感分析系统 1. 引言:AI 万能分类器的崛起 在当今信息爆炸的时代,社交媒体平台每天产生海量用户生成内容(UGC),从微博评论到小红书笔记,再到抖音弹幕&#xff0c…

作者头像 李华
网站建设 2026/3/20 21:49:13

Ultimate Vocal Remover 5.6:AI音频分离完整指南与实用技巧

Ultimate Vocal Remover 5.6:AI音频分离完整指南与实用技巧 【免费下载链接】ultimatevocalremovergui 使用深度神经网络的声音消除器的图形用户界面。 项目地址: https://gitcode.com/GitHub_Trending/ul/ultimatevocalremovergui 还在为提取纯净人声而烦恼…

作者头像 李华
网站建设 2026/3/15 16:13:42

百考通一键生成专业问卷,让数据收集从未如此简单!

百考通AI(https://www.baikaotongai.com)为您带来革命性的“智能问卷设计”功能,将复杂的人工设计过程,转化为简单的AI智能生成。只需描述您的需求,剩下的交给百考通AI,它将为您自动生成一份专业、高效、直达核心的完美问卷&#…

作者头像 李华
网站建设 2026/3/19 13:20:31

百考通AI:您的智能写作导师,一键生成规范、详实的开题报告,让学术启航不再迷茫!

对于每一位即将踏上研究征程的学子而言,“开题报告”是学术生涯中一道至关重要的里程碑。百考通AI(https://www.baikaotongai.com)为您倾力打造了革命性的“智能开题报告生成”功能。它将复杂的学术写作过程转化为简单的信息输入,只需填写几个关键字段&a…

作者头像 李华