⭐ NestJS入门指南:从零开始构建高效Node.js服务端应用

推荐强制读英文文档,学了英语了,同时掌握了这个文档的阅读方法。以后自己也能看懂文档了。学好nest.js英语,成为全栈工程师,去找外企remote。这就是给大家分享的破局之道

NestJS 是基于 Node.js 的渐进式服务端框架,使用 TypeScript 构建,融合了面向对象编程(OOP)、函数式编程(FP)和响应式编程(RP)理念。其核心设计借鉴了 Angular 的模块化思想,底层默认集成 Express(可切换为 Fastify),提供开箱即用的依赖注入、中间件管道、拦截器等企业级功能。

🌱 环境准备与项目初始化

让我们从创建一个全新的NestJS项目开始:

bash 复制代码
# 创建项目目录(文件夹),命名为my-nest-project
mkdir my-nest-project

# 进入刚创建的项目目录
cd my-nest-project

# 初始化Node.js项目,-y参数表示自动接受所有默认配置
# 这会生成一个package.json文件,记录项目信息和依赖
npm init -y

安装核心依赖包:

bash 复制代码
# 安装NestJS核心依赖包(生产环境依赖)
# --save 表示将这些包添加到package.json的dependencies中
npm install --save @nestjs/core @nestjs/common rxjs reflect-metadata @nestjs/platform-express

# 安装开发环境依赖包
# --save-dev 表示将这些包添加到package.json的devDependencies中
npm install --save-dev typescript ts-node @types/node

🏗️ 项目基础结构搭建

js 复制代码
my-nest-project/
├── src/                       # 源代码目录
│   ├── app.controller.ts      # 基础控制器(处理路由逻辑)
│   ├── app.module.ts          # 根模块(应用组织核心)
│   └── main.ts                # 应用入口(启动引导文件)
│
├── test/                      # 测试目录(可选)
│
├── node_modules/              # 依赖库(自动生成)
│
├── tsconfig.json              # TypeScript编译配置
│   ├── target: "ES2021"       # 编译目标ES版本
│   ├── module: "commonjs"     # 模块系统类型
│   └── experimentalDecorators # 启用装饰器支持
│
├── package.json               # 项目配置
│   ├── dependencies           # 生产依赖:
│   │   ├── @nestjs/core       # Nest核心库
│   │   └── reflect-metadata   # 装饰器元数据支持
│   └── scripts                # 启动命令:
│       ├── start              # 生产环境启动
│       └── start:dev          # 开发热重载
│
└── package-lock.json          # 依赖版本锁文件(自动生成)

创建基本配置文件tsconfig.json

json 复制代码
{
  "compilerOptions": {
    "target": "ES2021",
    "module": "commonjs",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "moduleResolution": "node"
  }
}
  1. targetmodule确保代码能在Node.js环境运行
  2. experimentalDecoratorsemitDecoratorMetadata是NestJS框架运行的基础
  3. moduleResolution确保模块路径解析与Node.js保持一致

🧩 核心模块构建

🌀 应用模块创建

src/app.module.ts中定义根模块:

typescript 复制代码
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';

@Module({
  controllers: [AppController],
})
export class AppModule {}

NestJS 使用 @Module 装饰器定义模块化架构,其中 AppModule 作为根模块通过 controllers 数组注册路由控制器,形成应用骨架。

🎮 控制器实现

创建基础控制器src/app.controller.ts

typescript 复制代码
import { Controller, Get } from '@nestjs/common';

@Controller()
export class AppController {
  @Get()
  greet(): string {
    return '欢迎来到NestJS世界!';
  }
}

NestJS 的控制器使用 @Controller 装饰器定义路由入口,上述代码创建了一个基础控制器 AppController。通过 @Get() 装饰器将 greet() 方法映射到根路径的 GET 请求,返回欢迎信息,展示了 NestJS 最核心的 路由机制装饰器语法

🚀 应用启动配置

设置应用入口文件src/main.ts

typescript 复制代码
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
  console.log(`应用已启动:http://localhost:3000`);
}
bootstrap();

这段代码是 NestJS 应用的启动入口,通过 NestFactory.create() 方法创建应用实例。bootstrap 异步函数会加载 AppModule 根模块,并在 3000 端口启动 HTTP 服务,是典型的 NestJS 应用引导方式。

关键点在于:

  1. NestFactory 是框架核心工厂类,提供静态方法创建应用实例
  2. create() 方法接收根模块作为参数,构建完整的依赖树
  3. listen() 启动服务后默认会挂载所有注册的控制器路由

🔧 项目运行与测试

package.json中添加启动脚本:

json 复制代码
{
  "scripts": {
    // 生产环境启动命令
    // 使用ts-node直接运行TypeScript源码(无需编译)
    // 从src/main.ts文件启动应用
    "start": "ts-node src/main.ts",
    
    // 开发环境启动命令
    // 使用Nest CLI的watch模式:
    // 1. 自动监听文件变化
    // 2. 修改后自动重新编译和重启
    // 3. 保留sourcemap支持调试
    // 4. 显示更友好的错误提示
    "start:dev": "nest start --watch"
  }
}

启动应用:

bash 复制代码
npm run start

访问测试端点:

arduino 复制代码
http://localhost:3000

🌟 核心特性解析

✨ 装饰器魔法

体验装饰器的强大功能:

typescript 复制代码
@Controller('products')
export class ProductsController {
  @Get(':id')
  getProduct(@Param('id') id: string): string {
    return `产品ID: ${id}`;
  }
}

💉 依赖注入系统

创建和使用服务:

typescript 复制代码
@Injectable()
export class UserService {
  private users = [];

  addUser(user) {
    this.users.push(user);
  }
}

@Controller('users')
export class UsersController {
  constructor(private userService: UserService) {}
}

🌈 项目优化技巧

使用Nest CLI提升开发效率:

bash 复制代码
npm i -g @nestjs/cli
nest generate module users
nest generate controller users
nest generate service users

配置热重载开发环境:

bash 复制代码
npm run start:dev

其中里面更多的去运用到:

  • 中间件开发
  • 异常过滤器
  • 管道验证
  • 守卫实现
  • 拦截器使用

建议结合 Swagger 自动生成 API 文档,并配置 CI/CD 实现自动化部署。

相关推荐
张迅之27 分钟前
【React】Ant Design 5.x 实现tabs圆角及反圆角效果
前端·react.js·ant-design
蔗理苦2 小时前
2025-09-05 CSS3——盒子模型
前端·css·css3
二川bro2 小时前
第25节:VR基础与WebXR API入门
前端·3d·vr·threejs
上单带刀不带妹3 小时前
Node.js 的模块化规范是什么?CommonJS 和 ES6 模块有什么区别?
前端·node.js·es6·模块化
缘如风3 小时前
easyui 获取自定义的属性
前端·javascript·easyui
诗书画唱3 小时前
【前端教程】JavaScript 实现图片鼠标悬停切换效果与==和=的区别
开发语言·前端·javascript
光影少年3 小时前
前端上传切片优化以及实现
前端·javascript·掘金·金石计划
喜葵3 小时前
前端安全防护深度实践:从XSS到供应链攻击的全面防御
前端·安全·xss
_r0bin_3 小时前
分片上传-
前端·javascript·状态模式
东北南西3 小时前
手写React状态hook
前端·javascript·react.js