What Fastify Does
- HTTP server — built on Node http with optimized routing (find-my-way)
- Schema validation — JSON Schema for body/params/query/headers
- Serialization — fast JSON output via fast-json-stringify
- Plugin system — encapsulated context with
fastify-plugin - Hooks — onRequest, preHandler, onSend, onResponse lifecycle
- Logging — Pino by default (fastest JSON logger)
Architecture
Plugin tree: each plugin creates an encapsulated context. Decorators attach state to request/reply/instance. Schema compilation happens once at startup for zero-cost runtime validation.
Self-Hosting
# Production
NODE_ENV=production node server.js
# Docker
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
CMD ["node", "server.js"]Key Features
- ~2x faster than Express in benchmarks
- Native TypeScript types
- JSON Schema validation + serialization
- Request lifecycle hooks
- Plugin encapsulation
- HTTP/2 support
- Async/await first-class
- Graceful shutdown built-in
Comparison
| Framework | Req/s | Schema | TS |
|---|---|---|---|
| Fastify | ~45K | JSON Schema | Yes |
| Express | ~15K | Manual | Optional |
| Koa | ~25K | Manual | Optional |
| Hapi | ~20K | Joi | Good |
常见问题 FAQ
Q: 能替换 Express 吗?
A: 可以。有 @fastify/express 兼容层支持大部分 Express 中间件。
Q: 为什么性能这么高? A: 优化的路由(radix tree)+ 编译期 schema 序列化(fast-json-stringify)+ Pino 日志。
Q: NestJS 可以用 Fastify 吗? A: 可以。NestJS 官方支持 Fastify adapter,替换默认 Express。
来源与致谢 Sources
- Docs: https://www.fastify.dev
- GitHub: https://github.com/fastify/fastify
- License: MIT