传统插件系统(如 VS Code 插件、Webpack 插件、Tapable 钩子)与 Cordis 的差异,集中体现在"能卸"这一根本问题上。
大多数传统插件系统解决的是"如何把模块动态塞进系统",却把"如何干净地卸下来"留给了插件作者。插件注册的全局事件监听、定时器、文件句柄、全局状态修改,卸载时若漏掉任何一项,就会造成内存泄漏或僵尸代码继续运行。Cordis 把干净卸载做成运行时强制保证的属性,而非插件作者的自觉纪律。
传统插件系统要么没有依赖声明(如 Pluggy 的 hook 系统),要么依赖关系静态固化。Cordis 让插件声明需求、运行时反应式响应依赖的出现、消失与改变,只有真正受影响的插件会被重启,实现了开放生态中的精确局部化。
传统插件系统往往与某个具体宿主或领域绑定。Cordis 定位为元框架,内核只提供插件、生命周期与副作用、服务、事件、可配置这五样互相咬合的原语,不耦合任何业务领域,上层应用可以在此基础上搭建任意特定领域的微内核系统。