spring的技术笔记
学习Nest核心第 9 / 23 篇2 分钟阅读

为什么用 Nest

为什么用 Nest

这节要解决什么

明白 Nest 解决什么痛点,以及它和 Express、和你熟悉的 Vue/Nuxt 怎么对应。

先用大白话

Express 很自由:一个文件里也能写完全部路由。项目小的时候爽,人一多、模块一多,就会出现:

  • 路由、校验、数据库访问搅在一起
  • 不知道公共逻辑该放哪
  • TypeScript 类型要自己一点点拼

Nest 像给 Node 后端加了一套「官方推荐的文件夹与规矩」:

  • 用 模块 切开功能(用户、书签、认证…)
  • 控制器 只负责接 HTTP
  • 服务 只负责干活(查库、算业务)
  • 天然 TypeScript

可以这么类比:

Nest你可能熟悉的
整个 Nest 项目一个规整的 Nuxt / 后端工程
Module功能模块目录(auth/、bookmarks/)
Controller路由入口(像 pages/server 的「入口层」)
Service真正的业务函数(像 composable / service)
Guard路由守卫(没登录别进来)
Pipe / DTO表单校验
底层 HTTP默认 Express(也可换 Fastify)

所以:学 Nest 不是丢掉 Express,而是 在 Express 之上用更清晰的结构写长期项目。

主项目是什么

贯穿后面章节的项目:

projects/03-nest-bookmark-api

「个人书签」:

  • 注册 / 登录
  • 登录后才能管理自己的书签
  • 数据存在 SQLite(Prisma)

领域简单,但够覆盖实战里最常见的后端技能。

先跑起来(感受一下)

cd projects/03-nest-bookmark-api
npm install
npx prisma migrate dev
npm run start:dev

浏览器打开:http://localhost:3000(若有欢迎信息或健康检查)。
接口文档感可以先用 curl;后面联调再用 Vue。

若某步报错,先看该项目的 README.md。

验收清单

  • 能用自己的话解释:为什么不只用 Express
  • 能说出 Module / Controller / Service 的分工(大白话版)
  • 知道主项目在 projects/03-nest-bookmark-api

下一节 → 02-模块-控制器-服务.md