Nestjs的基础掌握点


学习 NestJS 时,有一套系统性的基础知识必须掌握,这些基础会帮助你理解 NestJS 的整体架构,写出优雅、可维护、可扩展的后端应用。
以下是分模块的 NestJS 学习基础内容清单,并附带简单说明:


🧱 一、核心概念(必懂)

1. 模块(Module)

  • 每个功能区域都需要定义在模块中,类似于“房间”或“子系统”。
  • 使用 @Module() 装饰器。
  • 每个应用都必须有一个 AppModule
@Module({
  imports: [],
  controllers: [CatsController],
  providers: [CatsService],
})
export class CatsModule {}

2. 控制器(Controller)

  • 处理外部请求(HTTP、WebSocket 等)。
  • 使用 @Controller() 装饰器。
  • 每个路由的逻辑入口。
@Controller('cats')
export class CatsController {
  @Get()
  findAll() {}
}

3. 服务(Service)

  • 核心业务逻辑编写的地方。
  • 通常作为 Provider 注册,可以被注入到 Controller 或其他 Service 中。
@Injectable()
export class CatsService {
  getCats() {}
}

4. 提供者(Provider)

  • 上面讲过,是注入的核心对象,用来封装可复用的逻辑。
  • 通过 DI(依赖注入)机制进行连接。

5. 依赖注入(DI)

  • NestJS 的灵魂:将一个类的依赖自动注入到它的构造函数中,省去手动创建对象的麻烦。

🔧 二、路由与请求处理

1. 请求方法装饰器

  • @Get(), @Post(), @Put(), @Delete(), @Patch()

2. 参数装饰器

  • @Param(), @Query(), @Body(), @Headers(), @Req(), @Res()

📦 三、中间件与管道、守卫等机制

1. 中间件(Middleware)

  • 类似 Express 的中间件。
  • 在请求到达路由处理前拦截处理。

2. 守卫(Guard)

  • 用来做权限校验(是否登录、角色是否匹配等)。
  • 使用 @UseGuards() 装饰器。

3. 拦截器(Interceptor)

  • 用来对请求/响应做包装,比如统一响应结构、日志等。

4. 管道(Pipe)

  • 数据转换、验证的地方。可以对传入的参数进行格式化、校验等。

🧩 四、常用模块和功能

1. 配置模块(@nestjs/config)

  • 读取 .env 配置。
  • 推荐使用 ConfigService 做环境变量管理。

2. 全局异常过滤器

  • 自定义异常处理逻辑,统一错误格式返回。

3. 日志系统(Logger)

  • 使用 Logger 类进行日志打印或扩展。

4. 数据库集成

  • 常配合 TypeORM、Prisma 等 ORM 使用。
@Module({
  imports: [TypeOrmModule.forRoot({ /* db config */ })],
})

⚙️ 五、项目结构规范(建议)

  • 每个模块一个文件夹(模块化)。
  • 控制器、服务、DTO、实体、接口分开存放。
  • 建议使用 main.ts 作为入口,启动 Nest 应用。

📚 六、辅助技能建议掌握

  • TypeScript(强烈建议先熟练 TS)
  • Express 基础(Nest 底层默认使用 Express)
  • Promise / async-await 异步处理
  • 类装饰器和构造函数的概念
  • JSON 和 RESTful API 基础

🗂️ 七、可选进阶内容

  • 自定义装饰器
  • 自定义 Provider
  • 生命周期钩子(OnModuleInit, OnModuleDestroy
  • 微服务(使用 @nestjs/microservices
  • GraphQL 支持
  • WebSocket 网关
  • Swagger 文档集成

✅ 推荐学习顺序建议

  1. NestJS 架构理解(模块、控制器、服务、提供者)
  2. 路由 + 请求参数处理
  3. 依赖注入机制
  4. 中间件、守卫、拦截器、管道
  5. 配置管理与环境变量
  6. 数据库集成(Prisma 或 TypeORM)
  7. 测试、部署、日志、错误处理等

Vue 3 中的 Hooks详解

Nestjs的提供者概念

评 论
请登录后再评论