Cordis 插件生命周期

Cordis 插件生命周期 由 Archify 生成的生命周期图。 01 / 插件 Fiber 02 / 依赖等待 + 清理阶段 03 / Outcomes 已发现 · Loader 读取定义 · 插件 Fiber 01 已发现 Loader 读取定义 检查 inject · 解析运行时依赖 · 插件 Fiber 02 检查 inject 解析运行时依赖 执行 apply · 获得作用域 Context · 插件 Fiber 03 执行 apply 获得作用域 Context 插件已激活 · 贡献服务、事件与 Slot · 插件 Fiber 04 插件已激活 贡献服务、事件与 Slot 已释放 · 所有注册均撤销 · 插件 Fiber 05 已释放 所有注册均撤销 等待依赖 · 不进行半初始化 · 依赖等待 · pause 等待依赖 不进行半初始化 pause 反向执行 Disposer · effect 所有权边界 · 清理阶段 反向执行 Disposer effect 所有权边界 服务就绪 scope / plugin dispose 逆序清理完成 图例 开始 活动状态 等待 决策 成功终态 中性状态

激活合同

  • • inject 控制运行时激活,不只是类型提示
  • • 依赖满足后 apply 才能整体运行

注册即副作用

  • • ctx.on、ctx.effect、Service 与 Slot 都属于当前 Fiber
  • • 卸载 Fiber 自动撤销对应贡献

隔离原则

  • • 注册发生在插件生命周期内
  • • 模块级全局状态会绕开 Context 所有权