用途:面向使用 NestJS 构建可扩展服务端应用的场景,强调模块化架构与依赖注入。触发条件为构建可扩展的 NestJS 服务器应用。
主要能力与关键模式:
- 模块/控制器/服务结构:每个功能独立成模块,包含 controllers 与 providers,并导出服务;避免把所有服务注册到 AppModule。
- 依赖注入:通过构造函数注入,禁止手动 new 实例,由 DI 容器管理。
- 守卫、管道、拦截器:用于认证、校验与响应转换等横切关注点,如 @UseGuards(AuthGuard)、@UsePipes(new ValidationPipe({ whitelist: true }))、@UseInterceptors(ClassSerializerInterceptor)。
- DTO 与 class-validator:用装饰器实现自动校验,如 @IsString()、@MinLength(2)、@IsEmail()、@IsOptional()。
- 异常过滤器:集中将领域错误映射为 HTTP 响应,如 @Catch(DomainException) 实现 ExceptionFilter。
决策指引:REST 用 @Controller 与 HTTP 方法装饰器;GraphQL 用 @Resolver 配合 @nestjs/graphql;共享业务逻辑抽为 @Injectable() 服务;请求校验用 ValidationPipe;认证用实现 canActivate 的 Guard;响应塑形用 Interceptor 或 Serializer;后台任务用 @nestjs/bull 或 @nestjs/schedule;配置密钥用 ConfigModule.forRoot() 配合 .env。
边界情况:循环依赖用 forwardRef(() => SomeModule);请求作用域提供者默认单例,Scope.REQUEST 影响性能;模块顺序上先导入 ConfigModule;全局管道用 app.useGlobalPipes() 会跳过 DI,需注入依赖时改用 APP_PIPE 提供者;测试中在 Test.createTestingModule() 覆盖 providers 而非 imports。
不适用:单文件脚本或 CLI(用 Node.js)、轻量边缘函数(用 Hono/Express)、纯前端项目。
限制:资料未提供安装命令、版本要求、收费与价格信息,暂未提供。