小蜗
专栏

从零构建一个插件系统

以博客引擎从 GitHub Issues 生成 JSON 的流程为例,从最基础的串行插件系统起步,逐步引入并发调度、依赖拓扑排序与系统级缓存,并对比 Vue、Koa、Redux 与低代码场景下插件体系的形态。

共 6 篇更新于 2025-08-06

  • 01从零构建一个插件系统(一)插件的核心概念

    以博客引擎从拉取 GitHub Issues 到输出 JSON 的处理流程为例,梳理插件系统设计中的几个基本概念:生命周期划分、Context 与最小权限暴露、串行与并发调度、缓存的归属与实现,以及 TypeScript 下的类型扩展和插件定义形式。

    2025-07-22

  • 02从零构建一个插件系统(二)串行插件系统

    围绕 Next.js 构建 SSG 的目标,实现基础串行插件系统:用 use 注册插件,run 按 load、transform、generate 生命周期依次执行并共享 Context。随后针对插件可任意修改 Context 的隐患,重构为按阶段提供受限 API。

    2025-07-22

  • 03从零构建一个插件系统(三)串行插件系统

    在串行插件系统基础上引入并发执行,用拓扑排序和 Kahn 算法处理插件依赖顺序,通过入度队列确定可并发执行的插件,并检测循环依赖,重构类型与系统架构以集成依赖管理。

    2025-07-24

  • 04从零构建一个插件系统(四)插件的缓存

    在插件系统中加入系统级缓存,按插件名隔离命名空间,并用泛型提供类型支持。Cache 类通过异步工厂初始化,update 写入 JSON 文件,最后讨论用脏标记和微任务合并写入以减少磁盘 I/O。

    2025-07-29

  • 05从零构建一个插件系统(五)其他领域插件探讨

    文章从 Vue 插件、Koa 中间件和 Redux 中间件三个领域切入,对比不同业务场景下插件系统的设计思路,并用简化代码展示核心如何保持精简并允许第三方代码介入。

    2025-07-31

  • 06从零构建一个插件系统(六)低代码场景的插件构建思考

    低代码平台的状态变更需要可撤销、可扩展。整个插件体系以命令模式为骨架:全局状态树、命令对象与中心化执行器负责变更与撤销重做,组件则由 Zod 协议描述。

    2025-08-06