NestJS 是目前 Node.js 服务端开发中最接近企业级架构的框架。它在代码组织、可维护性和扩展性上是无与伦比的。
1. NestJS 到底解决了什么问题?
在传统的 Express 或 Koa 开发中,代码结构很自由(也就是很乱)。A 开发者喜欢把逻辑写在路由里,B 开发者喜欢写在 Model 里。
NestJS 就像是制定了严格SOP(标准作业程序)的连锁餐厅:
- 强制模块化: 无论谁来写,代码结构都一样。
- TypeScript 原生支持: 类型安全,减少 bug。
- 依赖注入(DI): 降低模块间的耦合度(这是核心,后面细说)。
2. 核心概念:餐厅经营法
我们把一个 NestJS 后端应用看作一家**“餐厅”**。
1. Controller (控制器) -> 服务员
- 职责: 站在门口(路由),负责接收客人的点单(HTTP 请求),并把做好的菜端给客人(HTTP 响应)。
- 原则: 服务员不应该做菜!不要在 Controller 里写复杂的业务逻辑,只负责“接单”和“上菜”。
2. Service (服务/提供者) -> 大厨
- 职责: 在厨房里,根据订单把菜做出来(处理业务逻辑,比如算账、去数据库拿数据)。
- 原则: 大厨只负责做菜,不关心是哪桌客人点的。
3. Module (模块) -> 分店经理
- 职责: 把服务员(Controller)和大厨(Service)组织在一起,形成一个完整的部门(比如“用户管理部门”或“订单部门”)。
- 原则: 每个功能块(如 User, Order, Product)都应该有自己的 Module。
4. DTO (数据传输对象) -> 菜单/点菜单
- 职责: 规定客人能点什么,不能点什么。如果客人点了一个“红烧恐龙蛋”(非法数据),DTO 层直接驳回,不会进厨房。