Node.js 写服务,Express 是默认选项,但当 QPS 上来、依赖膨胀后,你会发现很多开销来自框架本身:中间件链、序列化、日志都成了瓶颈。想要“快且省”的服务,又不想为了性能去学一套完全不同的运行时,就需要一个在 Node 生态内、但更轻更快的框架。
Fastify 的出发点正是“在 Node 上做到接近框架开销下限”:用 schema 驱动的序列化和校验、插件化架构,把吞吐和开发体验同时拉满。

项目基本信息

信息项详情
项目名称fastify
GitHub地址https://github.com/fastify/fastify
项目描述低开销、高性能的 Node.js Web 框架
作者fastify
开源协议MIT License
开源状态公开
LanguagesJavaScript
支持平台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 生态里以性能著称的主流选择。

二、核心优势

  1. 高性能低开销:schema 驱动序列化与校验,JSON 吞吐显著高于传统中间件拼装。
  2. 插件化:用 register 与封装作用域组织代码,避免全局污染、便于复用。
  3. 开发友好:内置 logger、脚手架与 TypeScript 类型,上手快。
  4. 生态兼容:大量社区插件覆盖鉴权、ORM、文档等常见需求。
  5. 跨平台:标准 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 协议、脚手架完善。