{T}

NestJS 概述

NestJS 是构建在 Express/Fastify 之上的渐进式 Node.js 服务端框架,借鉴 Angular 的模块化与依赖注入(DI)思想,将「企业级结构约束」带入 Node 生态。它本身不重新实现 HTTP 层,而是以平台适配器(默认 Express,可切换 Fastify)承载请求。

设计哲学:约束优于配置

图表渲染中…

核心三元组

概念职责装饰器
Module组织相关 Provider/Controller 的边界@Module({})
Controller接收请求、调用 Service、返回响应@Controller()
Provider封装业务逻辑与数据访问,可注入@Injectable()

最小示例(ESM,v22)

ts
import { Module } from '@nestjs/common';
import { Controller, Get } from '@nestjs/common';
import { Injectable } from '@nestjs/common';

@Injectable()
export class UserService {
  findAll() { return [{ id: 1, name: 'alice' }]; }
}

@Controller('users')
export class UserController {
  constructor(private readonly svc: UserService) {}
  @Get()
  findAll() { return this.svc.findAll(); }
}

@Module({ controllers: [UserController], providers: [UserService] })
export class UserModule {}

与 Express/Koa/Fastify 的关系

  • NestJS 不是另一个 HTTP 运行时,而是架构层;底层仍由 Express 或 Fastify 驱动。
  • NestFactory.create(AppModule, new FastifyAdapter()) 下可复用 Fastify 的高性能。
  • 适合中大型团队需要统一分层、AOP(拦截器/守卫/管道)与可测试性的项目。

何时选择 NestJS

  • ✅ 业务复杂、团队规模大、需要明确分层与 DI
  • ✅ 需要 GraphQL、Microservices、WebSocket 等开箱集成
  • ⚠️ 学习曲线陡峭,轻量 API 场景下引入成本高