01
装配入口
app.whenReady 是组合根,不是业务函数
这里创建或连接全局服务,再把它们注入窗口、IPC 和事件处理器。读启动链时要记录顺序依赖,而不是只列函数名。
像搭建舞台:先通电和装后台,再开前台窗口;先后顺序错了,按钮存在但背后的能力还没准备好。
02
隐含依赖图
全局变量让访问简单,也让初始化约束变隐形
PtyManager、HiveManager、HookServer、ClosingTimeController 等拥有不同资源。真正要审计的是谁创建、谁引用、谁监听谁,以及失败后剩下什么。
- 01构造依赖:A 没有 B 就不能创建。
- 02事件依赖:A 在运行中订阅 B。
- 03清理依赖:A 必须在 B 之前停止,避免回调落到已销毁资源。
- 04降级依赖:可选模块失败不应拖垮核心启动。
03
退出链
teardownAndQuit 是启动链的反向证明
可靠退出需要先阻止新工作,再停调度和网络入口,随后回收 PTY/进程、落盘状态,最后让 Electron 退出。只调用 app.quit 不等于完成生命周期。
关机场不能只关大厅灯:必须停止放行、让飞机落地、保存记录,最后才断电。