NestJS 实际上是什么 — 简单、无废话的解释

发布: (2025年12月15日 GMT+8 07:47)
4 min read
原文: Dev.to

Source: Dev.to

NestJS illustration

基础

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 如何自然地使用,而不是让人感到压倒性

它不会充斥流行词或假企业语言——只有清晰的解释、真实的基础,以及整个生态系统如何配合的宏观视角。

想要更多无废话的技术指南?

我在这里发布简洁、实用的云端和后端笔记:

https://ramcodesacadmey.gumroad.com

Back to Blog

相关文章

阅读更多 »