CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Node.js 框架与 ORM/课时/Fastify
RawBlame
课时目录12 节

Node.js 框架与 ORM

  1. 01Node 框架生态
  2. 02Fastify
  3. 03Hono
  4. 04fetch 与 HTTP 客户端
  5. 05Drizzle ORM
  6. 06Knex 查询构建
  7. 07Sequelize
  8. 08模板引擎
  9. 09Vitest 测试
  10. 10日志
  11. 11生产运行
  12. 12综合练习

Fastify

schema、插件、性能。

35 分钟

Fastify

Fastify 以 低开销、JSON Schema 校验、插件封装 著称。若 Express 像「自由拼装」,Fastify 更像 带契约的 HTTP 引擎——适合 API 优先、要自动校验请求体的服务。

学习目标

  • 创建 Fastify 应用与路由
  • 用 JSON Schema 校验 body / query
  • 理解插件注册与 fastify-plugin 封装

基本应用

import Fastify from "fastify";

const app = Fastify({ logger: true });

app.get("/health", async () => ({ ok: true }));

app.post("/api/tracks", {
  schema: {
    body: {
      type: "object",
      required: ["slug", "title"],
      properties: {
        slug: { type: "string", minLength: 1 },
        title: { type: "string" },
      },
    },
  },
}, async (request) => {
  return { id: 1, ...request.body };
});

await app.listen({ port: 3001, host: "0.0.0.0" });

校验失败时 Fastify 自动返回 400,无需手写 if。

与 Express 对照

ExpressFastify
app.use(middleware)app.register(plugin)
手动校验 bodyschema 声明式
默认无结构化日志内置 pino logger

插件与性能

  • 插件:路由、数据库、认证按模块 register,避免全局污染
  • 性能:路由表与序列化优化;高 QPS 场景常选 Fastify(细节见 nodejs-advanced-essentials)
  • TypeScript:配合 @fastify/type-provider-typebox 或 Zod 可进一步类型化(typescript-essentials)

练习

  • 把 node-express 的 /api/tracks 改写成 Fastify + schema
  • 开启 logger: true,观察请求日志格式
  • 写一个 fastify-plugin 封装「请求耗时」钩子

小结

Schema 先行、插件组合、日志内置——Fastify 的 API 服务默认姿势。 下一课 Hono:更轻、更边缘。

加载本节练习…
← 上一课Node 框架生态下一课 →Hono