全书目录

第十三篇:Fastify 完全指南 —— 高速物流中枢宇宙

第九章:插件体系 —— Fastify 不只是能扩展,它天生就是仓区化的

1 分钟 301 字 第 264 / 962 个阅读单元

Fastify 的一个核心原则是:如果某个能力可以做成插件,那它就应该是插件。

这意味着你的物流中枢不是一个巨大的单厅,而是很多独立仓区组成的系统。

js
async function shipmentPlugin (fastify) {
  fastify.get('/shipments', async function () {
    return [{ id: 'S1001' }]
  })
}

await fastify.register(shipmentPlugin, { prefix: '/api' })

这里最关键的不只是 register,而是它背后的封装性

#register 默认会创建新作用域
text
主中枢
│
├── 注册 A 仓区
│   ├── A 的装饰器
│   ├── A 的 hooks
│   └── A 的 routes
│
└── 注册 B 仓区
    ├── B 的装饰器
    ├── B 的 hooks
    └── B 的 routes

A 仓区里新增的设施,默认不会倒流污染整个主中枢。
这就是 Fastify 很重要的工程优势:封装和继承形成一张 DAG,而不是全局泥潭。

概念图:

text
root
├── auth-plugin
│   └── admin-routes
└── public-plugin
    └── shipment-routes
#为什么这比“所有中间件全局挂一遍”更稳

因为大型系统真正难的不是“先跑起来”,而是:

  • 不同模块别互相踩
  • 局部规则别污染全局
  • 新仓区上线别把老仓区带崩

Fastify 的插件体系就是在解决这个问题。