从0死磕全栈第八天:使用nest.js五分钟搭建后端开发环境

233 阅读5分钟

NestJS 入门实战:用 TypeScript 打造你的第一个 Node.js 后端服务

所有框架的本质,都是用约定减少决策成本。

你是否曾为以下问题困扰?

  • 前端用 React/Vue 写得飞快,后端却要从 Express 一行一行手写路由?
  • 想用 TypeScript 写后端,但不知道怎么组织项目结构?
  • 看过 Spring Boot 的模块化设计,想在 Node.js 世界里也实现“开箱即用”?
  • 想一个人独立完成前后端全栈开发,却苦于找不到高效、规范的后端方案?

如果你的答案是“是”,那么今天这篇《从0死磕全栈》第8篇,就是为你准备的——
手把手教你使用 NestJS,快速搭建一个结构清晰、类型安全、企业级风格的 Node.js 后端服务


一、什么是 NestJS?

NestJS 是一个基于 Node.js渐进式后端框架,由 TypeScript 构建,专为构建高效、可扩展的服务器端应用而生。

✅ 核心优势

特性说明
🧩 面向对象 + 函数式编程融合使用装饰器(Decorator)+ 模块化架构,类似 Java 的 Spring Boot
🔧 内置依赖注入自动管理服务实例,解耦组件,提升测试性
🚀 开箱即用架构提供标准项目结构(Controller/Service/Module),告别“文件乱堆”
💡 TypeScript 原生支持完整类型推断,IDE 智能提示,杜绝运行时错误
📦 多协议支持内置对 HTTP(Express/Fastify)、WebSocket、gRPC、RabbitMQ 支持
🧪 强大测试生态集成 Jest,轻松编写单元测试与 E2E 测试
🔄 无缝对接 ORMTypeORM、Prisma、Mongoose 一键集成

💬 一句话理解
如果你懂 Spring Boot,那你上手 NestJS 就像回家一样自然。
如果你只会 Express,那 NestJS 就是你通往“专业后端”的升级之路。


二、动手搭建:从零创建 NestJS 项目

步骤 1:全局安装 Nest CLI 工具

npm install -g @nestjs/cli

@nestjs/cli 是官方提供的命令行工具,用于快速生成项目和代码模块。

步骤 2:创建新项目

nest new my-nest-app

执行后会进入交互式配置:

选择包管理器(推荐 npm),等待安装完成。

步骤 3:打开项目目录

cd my-nest-app
code .  # 使用 VSCode 打开(或其他编辑器)

三、项目结构解析:为什么说它“规范”?

NestJS 项目默认结构如下:

my-nest-app/
├── src/
│   ├── app.controller.ts       # 根控制器
│   ├── app.module.ts           # 根模块
│   ├── app.service.ts          # 根服务
│   └── main.ts                 # 应用入口文件
├── test/                       # 测试目录
├── nest-cli.json               # CLI 配置
├── package.json
└── tsconfig.json

🔍 关键文件说明

文件作用
main.ts应用启动入口,类似 Java 的 main() 方法,初始化 AppModule
app.module.ts核心概念:模块(Module) —— 项目的组织单元,负责导入/导出其他模块
app.controller.ts路由处理器,定义 API 接口(如 /users
app.service.ts业务逻辑层,处理数据操作(增删改查)

NestJS 的黄金法则
Controller 负责接收请求,Service 负责处理逻辑,Module 负责组织关系。


四、模块化开发:让代码“分而治之”

我们来创建一个用户管理模块,模拟真实的开发流程。

步骤 1:生成模块、控制器、服务

nest generate module users
nest generate controller users
nest generate service users

或简写:

nest g mo users
nest g co users
nest g s users

执行后,src/ 目录下会新增一个 users/ 文件夹:

src/
└── users/
    ├── users.controller.ts
    ├── users.module.ts
    └── users.service.ts

同时,app.module.ts 会自动导入 UsersModule,无需手动配置!

步骤 2:编写 Service(业务逻辑)

// src/users/users.service.ts
import { Injectable } from '@nestjs/common';

@Injectable()
export class UsersService {
  private users = [
    { id: 1, name: '张三', email: 'zhangsan@example.com' },
    { id: 2, name: '李四', email: 'lisi@example.com' },
  ];

  findAll() {
    return this.users;
  }

  create(userData: any) {
    const newUser = { id: this.users.length + 1, ...userData };
    this.users.push(newUser);
    return newUser;
  }
}

@Injectable() 是 NestJS 的核心装饰器,告诉框架“这个类可以被注入到其他组件中”。

步骤 3:编写 Controller(接口层)

// src/users/users.controller.ts
import { Controller, Get, Post, Body } from '@nestjs/common';
import { UsersService } from './users.service';

@Controller('users') // 基础路径:http://localhost:3000/users
export class UsersController {
  constructor(private readonly usersService: UsersService) {}

  @Get() // GET /users
  findAll() {
    return this.usersService.findAll();
  }

  @Post() // POST /users
  create(@Body() createUserDto: any) {
    return this.usersService.create(createUserDto);
  }
}
📌 关键装饰器详解
装饰器用途
@Controller('users')定义该控制器的路由前缀
@Get()处理 GET 请求
@Post()处理 POST 请求
@Body()获取请求体中的 JSON 数据(自动反序列化)

💡 NestJS 的智能响应机制
当你返回一个对象(如 {id: 1, name: "张三"}),NestJS 会自动将其序列化为 JSON 并设置状态码为 200(POST 为 201)。
不需要手动调用 res.json()

步骤 4:启动项目

npm run start

或开发模式(自动重启):

npm run start:dev

访问地址:http://localhost:3000/users

  • ✅ GET 请求 → 返回所有用户列表
  • ✅ POST 请求 → 使用 Postman 或 curl 添加新用户:
curl -X POST http://localhost:3000/users \
  -H "Content-Type: application/json" \
  -d '{"name":"王五","email":"wangwu@example.com"}'

五、为什么说 NestJS 是“优雅”的选择?

对比维度ExpressNestJS
项目结构自由散漫,易混乱强制分层,规范统一
类型安全无类型,靠文档全局 TypeScript,编译期校验
依赖注入需手动 new 实例自动注入,解耦高
测试支持需自己封装内置 Jest,开箱即用
学习曲线简单入门中等,但有 Spring 背景者秒懂
生产适用小项目✅ 大型项目首选

结论
如果你是初学者,可以从 Express 学起;
如果你想成为专业后端开发者,NestJS 是你通往高质量工程化的必经之路


六、结语:全栈之路,从这里开始

从前端的 React + Zustand,到后端的 NestJS + TypeORM,
你已经拥有了一个人独立完成全栈项目的能力

  • 前端负责用户体验
  • 后端负责数据与逻辑
  • TypeScript 统一语言,提升协作效率

真正的自由,不是选择多,而是有能力把任意选择都做得漂亮。

NestJS 不是“又一个框架”,它是现代 Node.js 开发的最佳实践集合体
它让你不再写“胶水代码”,而是专注于业务价值本身


📚 推荐资源