Electron:从入门到桌面应用交付

Electron:从入门到桌面应用交付

本文件只用于课程规划,不参与 Nuxt Content 导航。文章按学习阶段分布在 01.guide/05.delivery/ 五个目录中。

规划结论

现有课程的基础内容是够用的,但范围偏窄,主要覆盖了进程、IPC、窗口菜单、文件选择和打包。参考目录中与 Electron 岗位实践直接相关、而现有课程没有充分覆盖的内容主要有:

  • Vue 工程集成:开发服务器、热更新、构建资源路径、路由和类型声明。
  • 安全边界:contextIsolationsandbox、CSP、导航限制和 IPC 参数校验。
  • 会话与本地数据:session、Cookie、登录态、配置持久化和凭证保护。
  • 桌面交互:托盘、快捷键、多窗口关系、窗口状态和窗口间协作。
  • 资源加载:自定义协议、深链接,以及开发环境和打包后的路径差异。
  • 交付闭环:PDF 报告、自动更新、测试、崩溃收集、日志和发布验证。

因此课程从原来的 6 篇扩展为 16 篇,顺序按照“认识结构 → 开发功能 → 加固应用 → 交付维护 → 综合实战”组织。每篇只解决一个核心问题,避免把安全、打包和业务功能混在同一篇里。

文章目录

序号文件名文章标题核心内容现有内容处理
0101.index.mdElectron 是什么Chromium 与 Node.js 的分工;桌面应用与 Web 应用的区别;适用场景、成本;创建第一个窗口。保留并补充选型边界,课程路线改为 16 篇。
0202.process-model.md主进程、渲染进程与 preload三类运行环境的职责;窗口与页面关系;contextIsolation 的基本含义;生命周期入口。保留现有主体,减少与 IPC 的重复。
0301.guide/03.vue-integration.mdElectron 与 Vue 工程集成Vite 开发服务器;热更新;loadURL/loadFile;路由模式;环境变量;TypeScript 类型声明;构建资源路径。新增,提前到基础结构之后。
0402.core/04.window-lifecycle.md创建窗口与应用生命周期BrowserWindow;窗口引用;单实例;启动、激活、关闭和退出。从原进程文章拆出窗口生命周期,并补单实例。
0502.core/05.ipc-design.mdIPC 通信与接口设计invoke/handlesend/on;双向通知;通道命名;参数校验;错误返回;监听清理。以现有 IPC 文章为基础重写,加入接口设计原则。
0602.core/06.filesystem-system.md本地文件与系统交互打开/保存对话框;异步文件读写;文件类型校验;剪贴板;通知;shell 的安全边界。合并现有文件对话框文章,并补保存文件与常用系统 API。
0703.desktop/07.security.md桌面端安全基础contextIsolationsandboxnodeIntegration;CSP;来源和参数验证;导航/新窗口限制;不暴露原始 IPC。新增。
0803.desktop/08.window-menu-tray.md菜单、托盘与多窗口应用菜单;快捷键;托盘菜单;设置窗口;父子窗口;窗口状态;窗口间协作。扩展现有窗口与菜单文章。
0903.desktop/09.session-storage.md会话、网络与本地存储session、Cookie、登录态;请求和代理;配置文件;安全保存凭证;退出登录和数据清理。新增。
1004.stability/10.protocol-loading.md自定义协议与资源加载protocol;深链接;本地资源访问;开发与打包后的路径;禁止任意路径读取。新增。
1104.stability/11.tasks-performance.md耗时任务与性能排查主进程阻塞;utilityProcess/Worker 的选型;任务取消;内存泄漏;窗口和监听清理;日志定位。新增。
1204.stability/12.pdf-report.mdPDF 打印与报告导出独立报告页面;打印样式;字体和图片就绪;printToPDF;保存位置;导出失败反馈;与 Word 导出的边界。新增。
1305.delivery/13.package-update.md应用打包与自动更新Forge 打包;应用目录与安装包;应用图标;GitHub Releases;更新检查、下载和重启。从现有打包文章整理,保留自动更新入门流程。
1405.delivery/14.code-signing.md桌面应用签名与公证macOS Developer ID、osxSign、公证;Windows .pfx、maker 配置、签名验证和发布检查。新增独立签名文章,补齐正式交付流程。
1505.delivery/15.test-monitor-release.md测试、监控与发布主进程调试;渲染界面测试;IPC 测试;崩溃收集;日志;版本兼容;CI/CD;发布前验证清单。原第 14 篇顺延。
1605.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 项目接入、安全加固、数据持久化、资源加载、稳定性、报告交付、发布运维和业务闭环。

写作约束

  1. 第 01 篇使用最小原生 HTML 示例讲清 Electron,再在第 05 篇接入 Vue,避免初学者同时处理两个问题。
  2. 所有涉及系统能力的示例都通过 preload 暴露用途明确的方法,正文必须说明不能直接暴露 ipcRendererfs 或 Node.js 全部能力。
  3. 所有安装命令在代码块附近注明 Node.js、Electron 及相关工具版本。
  4. 第 13、14 篇涉及签名、自动更新、CI/CD 和平台控制台时,按项目规范添加平台界面时效性提示。
  5. 第 16 篇只使用文件导入、列表、状态反馈和报告保存等高频场景,不引入复杂业务模型;分析结果可以用可验证的本地规则模拟。
  6. 文章中的 API 以当前 Electron 常用写法为主,冷门模块和源码级实现只在确有必要时简要说明。

学习闭环

认识 Electron
    ↓
进程边界与窗口生命周期
    ↓
安全 IPC 与 Vue 工程集成
    ↓
文件、系统能力、菜单和多窗口
    ↓
安全、会话、资源加载、耗时任务
    ↓
PDF 报告、打包签名、自动更新
    ↓
测试、监控、发布与综合实战