Electron:从入门到桌面应用交付
Electron:从入门到桌面应用交付
本文件只用于课程规划,不参与 Nuxt Content 导航。文章按学习阶段分布在
01.guide/到05.delivery/五个目录中。
规划结论
现有课程的基础内容是够用的,但范围偏窄,主要覆盖了进程、IPC、窗口菜单、文件选择和打包。参考目录中与 Electron 岗位实践直接相关、而现有课程没有充分覆盖的内容主要有:
- Vue 工程集成:开发服务器、热更新、构建资源路径、路由和类型声明。
- 安全边界:
contextIsolation、sandbox、CSP、导航限制和 IPC 参数校验。 - 会话与本地数据:
session、Cookie、登录态、配置持久化和凭证保护。 - 桌面交互:托盘、快捷键、多窗口关系、窗口状态和窗口间协作。
- 资源加载:自定义协议、深链接,以及开发环境和打包后的路径差异。
- 交付闭环:PDF 报告、自动更新、测试、崩溃收集、日志和发布验证。
因此课程从原来的 6 篇扩展为 16 篇,顺序按照“认识结构 → 开发功能 → 加固应用 → 交付维护 → 综合实战”组织。每篇只解决一个核心问题,避免把安全、打包和业务功能混在同一篇里。
文章目录
| 序号 | 文件名 | 文章标题 | 核心内容 | 现有内容处理 |
|---|---|---|---|---|
| 01 | 01.index.md | Electron 是什么 | Chromium 与 Node.js 的分工;桌面应用与 Web 应用的区别;适用场景、成本;创建第一个窗口。 | 保留并补充选型边界,课程路线改为 16 篇。 |
| 02 | 02.process-model.md | 主进程、渲染进程与 preload | 三类运行环境的职责;窗口与页面关系;contextIsolation 的基本含义;生命周期入口。 | 保留现有主体,减少与 IPC 的重复。 |
| 03 | 01.guide/03.vue-integration.md | Electron 与 Vue 工程集成 | Vite 开发服务器;热更新;loadURL/loadFile;路由模式;环境变量;TypeScript 类型声明;构建资源路径。 | 新增,提前到基础结构之后。 |
| 04 | 02.core/04.window-lifecycle.md | 创建窗口与应用生命周期 | BrowserWindow;窗口引用;单实例;启动、激活、关闭和退出。 | 从原进程文章拆出窗口生命周期,并补单实例。 |
| 05 | 02.core/05.ipc-design.md | IPC 通信与接口设计 | invoke/handle、send/on;双向通知;通道命名;参数校验;错误返回;监听清理。 | 以现有 IPC 文章为基础重写,加入接口设计原则。 |
| 06 | 02.core/06.filesystem-system.md | 本地文件与系统交互 | 打开/保存对话框;异步文件读写;文件类型校验;剪贴板;通知;shell 的安全边界。 | 合并现有文件对话框文章,并补保存文件与常用系统 API。 |
| 07 | 03.desktop/07.security.md | 桌面端安全基础 | contextIsolation、sandbox、nodeIntegration;CSP;来源和参数验证;导航/新窗口限制;不暴露原始 IPC。 | 新增。 |
| 08 | 03.desktop/08.window-menu-tray.md | 菜单、托盘与多窗口 | 应用菜单;快捷键;托盘菜单;设置窗口;父子窗口;窗口状态;窗口间协作。 | 扩展现有窗口与菜单文章。 |
| 09 | 03.desktop/09.session-storage.md | 会话、网络与本地存储 | session、Cookie、登录态;请求和代理;配置文件;安全保存凭证;退出登录和数据清理。 | 新增。 |
| 10 | 04.stability/10.protocol-loading.md | 自定义协议与资源加载 | protocol;深链接;本地资源访问;开发与打包后的路径;禁止任意路径读取。 | 新增。 |
| 11 | 04.stability/11.tasks-performance.md | 耗时任务与性能排查 | 主进程阻塞;utilityProcess/Worker 的选型;任务取消;内存泄漏;窗口和监听清理;日志定位。 | 新增。 |
| 12 | 04.stability/12.pdf-report.md | PDF 打印与报告导出 | 独立报告页面;打印样式;字体和图片就绪;printToPDF;保存位置;导出失败反馈;与 Word 导出的边界。 | 新增。 |
| 13 | 05.delivery/13.package-update.md | 应用打包与自动更新 | Forge 打包;应用目录与安装包;应用图标;GitHub Releases;更新检查、下载和重启。 | 从现有打包文章整理,保留自动更新入门流程。 |
| 14 | 05.delivery/14.code-signing.md | 桌面应用签名与公证 | macOS Developer ID、osxSign、公证;Windows .pfx、maker 配置、签名验证和发布检查。 | 新增独立签名文章,补齐正式交付流程。 |
| 15 | 05.delivery/15.test-monitor-release.md | 测试、监控与发布 | 主进程调试;渲染界面测试;IPC 测试;崩溃收集;日志;版本兼容;CI/CD;发布前验证清单。 | 原第 14 篇顺延。 |
| 16 | 05.delivery/16.project-file-manager.md | 实战:桌面资料管理工具 | 文件导入;资料列表;服务端联调;任务状态;报告保存;错误反馈;安全和发布检查。 | 原第 15 篇顺延,串联前 15 篇。 |
与现有文章的调整关系
直接保留并重写边界
01.guide/01.index.md:保留入门示例,删除“课程共六篇”的旧路线。01.guide/02.process-model.md:保留进程模型,窗口生命周期的详细内容移动到第 04 篇。02.core/05.ipc-design.md:以原 IPC 文章为基础,补充双向通知、错误和清理。03.desktop/08.window-menu-tray.md:以原窗口与菜单文章为基础,加入托盘、快捷键和多窗口协作。02.core/06.filesystem-system.md:以原文件对话框文章为基础,加入保存文件、剪贴板、通知和shell边界。05.delivery/13.package-update.md:以原打包文章为基础,整理打包和自动更新入门流程。05.delivery/14.code-signing.md:新增独立签名与公证文章,详细讲解证书、Forge 配置和验证。
必须新增的能力
第 05、07、09、10、11、12、14、15、16 篇是现有课程缺少或重新拆分的完整主题。它们不是把零散 API 罗列出来,而是分别对应 Vue 项目接入、安全加固、数据持久化、资源加载、稳定性、报告交付、发布运维和业务闭环。
写作约束
- 第 01 篇使用最小原生 HTML 示例讲清 Electron,再在第 05 篇接入 Vue,避免初学者同时处理两个问题。
- 所有涉及系统能力的示例都通过 preload 暴露用途明确的方法,正文必须说明不能直接暴露
ipcRenderer、fs或 Node.js 全部能力。 - 所有安装命令在代码块附近注明 Node.js、Electron 及相关工具版本。
- 第 13、14 篇涉及签名、自动更新、CI/CD 和平台控制台时,按项目规范添加平台界面时效性提示。
- 第 16 篇只使用文件导入、列表、状态反馈和报告保存等高频场景,不引入复杂业务模型;分析结果可以用可验证的本地规则模拟。
- 文章中的 API 以当前 Electron 常用写法为主,冷门模块和源码级实现只在确有必要时简要说明。
学习闭环
认识 Electron
↓
进程边界与窗口生命周期
↓
安全 IPC 与 Vue 工程集成
↓
文件、系统能力、菜单和多窗口
↓
安全、会话、资源加载、耗时任务
↓
PDF 报告、打包签名、自动更新
↓
测试、监控、发布与综合实战
