一. 基础概念
- Controller:负责监听指定请求,然后处理由哪些模块来响应。
- Service:负责处理业务逻辑,保存数据库等。
- Provider:抽象一段复杂逻辑为一个独立的类,它可以是一个 service/repository/factory/helper。
- Module:带有
@Module()
装饰器的普通类,Nestjs 用它来组织应用结构。 - Interceptor:拦截器中间件,用来处理请求到达 Controller 之前的动作和 Controller 执行完成之后的动作。
- Guard:守卫中间件,用于验证和授权,它返回一个布尔值。
- Pipe:管道中间件,位于用户和 Controller 之间,通常用于用户请求到达 Controller 之前的验证和传输。
- DTO (Data Transfer Object):定义了数据如何通过网络传输,它通常用于验证和类型检查。
- Interface:TypeScript 接口,用于类型检查,它不会被编译成 JS 代码。
二. 工程化
把前后端放置在一个仓库,称之为「单 MVC 仓库」,好处:
轻量级基础设施! 一个仓库,一个部署,无需同步。为 API 提供服务的相同后端也可以为前端提供服务。当然,后端和前端的代码和配置需要在仓库中很好地分离,并且在将来需要时可以分离到自己的仓库中,Typescript 和 ESLint 对此提供了很好的支持。