NestJS 实际上是什么 — 简单、无废话的解释
Source: Dev.to

基础
NestJS 基本上是一个以 TypeScript 为首的框架,构建在 Node.js 和 Express 之上。没有魔法,没有炒作——只有我们已经熟悉的工具之上的结构。
之前的技术
Node.js → JavaScript 运行时
在浏览器之外运行 JS。非常适合快速的后端开发。
但 JavaScript 本身很怪异:没有类型,容易快速迭代,也容易不小心把一切都弄坏。
Express → 简单的服务器
Express 让后端开发变得异常轻松。学习曲线极低,完美适用于小项目、原型、黑客马拉松。
当应用变大时,一切就会变得混乱。
大型 Node 应用的问题
- 没有类型保证
- 没有强制的结构
- 每个开发者都自行决定文件夹布局
- 业务逻辑与路由混在一起
- 回归错误成倍增加
- “只要加个新功能” 变成了 “希望别炸了”
即使使用 Node + TS 仍然会出现:
- 边界未被强化
- 灵活性过大
- 团队的代码风格千差万别
- 依赖混乱
- 缺乏针对大型应用的约定结构
NestJS:Node + Express,但更成熟
NestJS 基于 Express(或 Fastify)之上,提供真正的结构、真正的边界以及一致的构建方式——尤其在多开发者协作时。Nest 最重要的理念是 有主张的架构——不是可选的、不是“自行选择冒险”,而是实际的结构。
Controllers + Services = 清晰的分离
Nest 强制使用 Controller → Service 模式,悄悄实现单一职责原则:
- Controllers 处理传入请求
- Services 处理业务逻辑
没有混杂,没有“把所有东西都放在一个文件里”的胡闹。Nest 还把所有内容拆分成 modules——每个 controller、service 和特性都被分离、整洁,并通过根模块连接。仅此一点就让大型代码库更易于理解。
正确的依赖注入(DI)
Node 往往大量依赖随机的 NPM 包,这会带来安全和维护上的头疼。Nest 提供:
- 内置依赖注入
- 更清晰的集成方式
- 更少的第三方地雷
- 更安全、更可预测的架构
功能可以干净地插拔,而不会变成电视后面的乱线。
额外的 Nest 优势
- DTO(数据传输对象)
- 用于验证的 Pipes
- Providers
- Guards
- 一流的测试支持
- 用于脚手架的 CLI 工具
基本上,所有你希望 Express 开箱即有的功能,Nest 都提供了。
为什么我要写这个系列
我正在发布一系列简明的 NestJS 指南,帮助大家真正理解:
- NestJS 的工作原理
- 架构是如何组合在一起的
- TypeScript + Node + Nest 如何自然地使用,而不是让人感到压倒性
它不会充斥流行词或假企业语言——只有清晰的解释、真实的基础,以及整个生态系统如何配合的宏观视角。
想要更多无废话的技术指南?
我在这里发布简洁、实用的云端和后端笔记: