一. 基础概念

  1. Controller:负责监听指定请求,然后处理由哪些模块来响应。
  2. Service:负责处理业务逻辑,保存数据库等。
  3. Provider:抽象一段复杂逻辑为一个独立的类,它可以是一个 service/repository/factory/helper。
  4. Module:带有 @Module() 装饰器的普通类,Nestjs 用它来组织应用结构。
  5. Interceptor:拦截器中间件,用来处理请求到达 Controller 之前的动作和 Controller 执行完成之后的动作。
  6. Guard:守卫中间件,用于验证和授权,它返回一个布尔值。
  7. Pipe:管道中间件,位于用户和 Controller 之间,通常用于用户请求到达 Controller 之前的验证和传输。
  8. DTO (Data Transfer Object):定义了数据如何通过网络传输,它通常用于验证和类型检查。
  9. InterfaceTypeScript 接口,用于类型检查,它不会被编译成 JS 代码。

二. 工程化

  1. CSR (客户端渲染) 仓库地址
  2. SSR (服务端渲染) 学习文章

把前后端放置在一个仓库,称之为「单 MVC 仓库」,好处:

轻量级基础设施! 一个仓库,一个部署,无需同步。为 API 提供服务的相同后端也可以为前端提供服务。当然,后端和前端的代码和配置需要在仓库中很好地分离,并且在将来需要时可以分离到自己的仓库中,Typescript 和 ESLint 对此提供了很好的支持。