Node.js 写服务,Express 是默认选项,但当 QPS 上来、依赖膨胀后,你会发现很多开销来自框架本身:中间件链、序列化、日志都成了瓶颈。想要“快且省”的服务,又不想为了性能去学一套完全不同的运行时,就需要一个在 Node 生态内、但更轻更快的框架。
Fastify 的出发点正是“在 Node 上做到接近框架开销下限”:用 schema 驱动的序列化和校验、插件化架构,把吞吐和开发体验同时拉满。
项目基本信息
| 信息项 | 详情 |
|---|---|
| 项目名称 | fastify |
| GitHub地址 | https://github.com/fastify/fastify |
| 项目描述 | 低开销、高性能的 Node.js Web 框架 |
| 作者 | fastify |
| 开源协议 | MIT License |
| 开源状态 | 公开 |
| Languages | JavaScript |
| 支持平台 | Windows / macOS / Linux |
| 最后更新 | 2026-11-01 |
一、项目介绍
fastify/fastify 是一个低开销、高性能的 Node.js Web 框架,MIT 协议。它用 schema(基于 Ajv、fast-json-stringify)做请求校验与响应序列化,从而把 JSON 处理成本压到极低;插件化架构( encapsulate 作用域)让应用可以按需组合、互不污染。Fastify 提供脚手架(npm init fastify)、logger、类型友好的 TypeScript 支持,并兼容大量社区插件,是 Node 生态里以性能著称的主流选择。
二、核心优势
- 高性能低开销:schema 驱动序列化与校验,JSON 吞吐显著高于传统中间件拼装。
- 插件化:用 register 与封装作用域组织代码,避免全局污染、便于复用。
- 开发友好:内置 logger、脚手架与 TypeScript 类型,上手快。
- 生态兼容:大量社区插件覆盖鉴权、ORM、文档等常见需求。
- 跨平台:标准 Node 应用,Windows / macOS / Linux 一致运行。
三、适用场景
- 对延迟与吞吐敏感的 API 服务与网关。
- 希望保留 Node 生态、又想甩掉 Express 性能包袱的团队。
- 需要 schema 校验 + 自动序列化的一站式 Web 服务。
- 用脚手架快速起一个生产级 Node 服务的场景。
四、安装教程
脚手架一键初始化:
mkdir my-app && cd my-app
npm init fastify
npm i
npm run dev或直接安装核心包:
npm i fastify常见报错:npm init fastify 需联网拉取模板;Node 版本过低会导致 ESM/语法错误,建议 Node 18+。
五、使用示例
最简服务示例:
import Fastify from 'fastify'
const fastify = Fastify({ logger: true })
fastify.get('/', async () => {
return { hello: 'world' }
})
fastify.listen({ port: 3000 }, (err) => {
if (err) throw err
})真实运行:启动后访问 http://localhost:3000 返回 {"hello":"world"}。Fastify 的优势在规模上显现——当你给路由加上 JSON schema,响应序列化会由 fast-json-stringify 生成专用函数,避免运行时反射,吞吐随之大幅提升。
六、常见问题
Q:Fastify 和 Express 怎么选?
A:追求极致性能与 schema 校验选 Fastify;想要最大生态与最小概念负担可选 Express,二者都属 Node 标准栈。
Q:schema 是必须的吗?
A:不是必须,但加上能同时获得校验与高性能序列化,是 Fastify 的推荐用法。
Q:能复用 Express 中间件吗?
A:可用 adaptor 中间件桥接 net/http 风格 handler,但原生插件性能更好。
七、总结
Fastify 在 Node 生态内把“快”和“省”做到了框架级:schema 驱动的序列化与插件化架构,让高性能服务不再需要换运行时。对既想保住 Node 生态、又想甩开性能包袱的团队,它是 Express 之外最值得评估的默认选项;MIT 协议、脚手架完善。
评论 0
还没有评论,来说两句吧。