NestJS新手入门核心模块对比表笔记
说明:表格严格遵循NestJS官方文档定义,重点标注各模块「声明函数/接口」「核心用法」,适配快速记忆,所有接口、装饰器均与官方保持一致,如内容有问题可以联系作者修改,谢谢。
| 模块名称 | 官方核心定位 | 声明函数/核心接口(必填) | 接口参数/核心方法 | 官方核心装饰器 | 执行时机 | 官方核心作用 |
|---|---|---|---|---|---|---|
| Controllers (控制器) | 请求处理入口,负责接收客户端请求并返回响应 | 无强制接口,通过「类+装饰器」声明 | 请求装饰器参数(路由路径、请求方法);处理方法接收请求参数 | @Controller()、@Get()、@Post()、@Param()、@Body()、@Query() | 请求进入后,中间件之后 | 路由映射、请求接收、响应返回 |
| Providers (提供者) | 可注入的依赖单元,封装业务逻辑(核心为Service) | 无接口,通过@Injectable()标记类即可声明 | 自定义业务方法(如create、findAll),支持构造函数注入 | @Injectable()(必填,标记为可注入) | 被依赖组件(如Controller)调用时 | 封装业务逻辑、解耦、支持依赖注入 |
| Modules (模块) | 应用组织单元,管理模块内组件及依赖关系 | 无接口,通过@Module()装饰器声明类 | @Module()配置对象(providers、controllers、imports、exports) | @Module()(必填)、@Global()(可选,全局模块) | 应用启动时加载 | 划分功能边界、管理依赖导入导出、组件共享 |
| Middleware (中间件) | 请求处理流程中的中间层,可拦截请求/响应 | 类式:implements NestMiddleware;函数式:直接声明函数 | use(req: Request, res: Response, next: NextFunction)(类式/函数式通用) | @Injectable()(仅类式中间件必填) | 请求进入最前端,控制器之前 | 日志记录、请求验证、跨域处理等通用逻辑 |
| Exception Filters (异常过滤器) | 统一处理应用中未捕获的异常,格式化异常响应 | implements ExceptionFilter | catch(exception: any, host: ArgumentsHost)(必填方法) | @Injectable()(必填)、@Catch()(必填,指定捕获的异常类型) | 发生未捕获异常时 | 统一异常响应格式、自定义异常处理逻辑 |
| Pipes (管道) | 处理控制器方法参数,实现参数验证、转换 | implements PipeTransform<T, R>(T:输入类型,R:输出类型) | transform(value: T, metadata: ArgumentMetadata)(必填方法) | @Injectable()(必填) | 控制器方法调用前,参数解析后 | 参数验证、参数类型转换、数据格式化 |
| Guards (守卫) | 请求授权控制,决定请求是否能进入控制器方法 | implements CanActivate | canActivate(context: ExecutionContext)(必填方法,返回布尔值) | @Injectable()(必填) | 中间件之后,管道之前 | 权限校验、角色控制、请求合法性判断 |
| Interceptors (拦截器) | 面向切面编程,拦截控制器方法执行前后逻辑 | implements NestInterceptor<T, R>(T:输入,R:输出) | intercept(context: ExecutionContext, next: CallHandler)(必填方法) | @Injectable()(必填) | 管道之后,控制器方法执行前后 | 日志记录、响应映射、异常映射、请求/响应拦截 |
| Custom decorators (自定义装饰器) | 封装装饰器逻辑,扩展Nest装饰器功能 | 参数装饰器:createParamDecorator;装饰器组合:applyDecorators | createParamDecorator((data, ctx) => { ... });applyDecorators(多个装饰器) | 无必填装饰器,可组合官方装饰器使用 | 被装饰的类/方法/参数初始化时 | 简化代码、复用装饰器逻辑、扩展官方功能 |
评论