🚀 NestJS 系列教程(一):认识 NestJS 与项目初始化
✨ 前言
NestJS 是一个用于构建高效、可扩展 Node.js 服务端应用程序的框架。它使用 TypeScript 构建,结合了面向对象编程(OOP)、函数式编程(FP)和函数响应式编程(FRP)等概念,非常适合用于构建微服务、RESTful API 等现代服务端应用。
本系列教程将以 NestJS 官方中文文档 为蓝本,逐章精讲配套代码,带你系统学习这一现代 Node.js 框架。
🧱 第1章:NestJS 简介与项目初始化
Nest 是什么?
Nest 是一个渐进式 Node.js 框架,用于构建高性能的服务端应用。
Nest 基于 TypeScript 构建,并受 Angular 的启发,结构清晰、模块化、可测试性强。它对 Express(默认)或 Fastify 提供封装,保留底层自由度,同时提供更现代的结构化开发体验。
🛠️ 创建第一个 NestJS 项目
我们使用官方提供的 CLI 工具来快速初始化项目。
安装 Nest CLI
npm i -g @nestjs/cli
安装成功后,你可以使用 nest
命令:
nest --version
创建项目
nest new my-nest-project
CLI 会提示你选择包管理器,推荐选择 npm
或 yarn
。
初始化成功后,项目结构如下:
my-nest-project/
├── src/
│ ├── app.controller.ts // 控制器
│ ├── app.controller.spec.ts // 控制器测试文件
│ ├── app.module.ts // 根模块
│ ├── app.service.ts // 服务(业务逻辑)
│ └── main.ts // 应用入口文件
├── test/ // 测试目录
├── package.json
└── tsconfig.json // TypeScript 配置
🚀 运行项目
进入项目目录:
cd my-nest-project
npm run start
默认监听端口为 http://localhost:3000
,你将看到:
[Nest] 2025 - Nest application successfully started
访问浏览器输入地址 http://localhost:3000
,将看到:
Hello World!
📂 项目结构讲解
main.ts
Nest 应用的入口文件:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
说明:
NestFactory.create(AppModule)
:创建应用实例;app.listen(3000)
:监听 3000 端口;AppModule
是我们的根模块。
app.module.ts
模块是 Nest 的核心结构单元:
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [], // 引入其他模块
controllers: [AppController], // 控制器列表
providers: [AppService], // 服务列表(依赖注入)
})
export class AppModule {}
app.controller.ts
控制器用于处理路由请求:
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get() // 监听 GET /
getHello(): string {
return this.appService.getHello();
}
}
app.service.ts
服务中处理具体业务逻辑:
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
✅ 小结
在本篇中,我们完成了:
- 了解 NestJS 的基本理念;
- 使用 Nest CLI 快速初始化项目;
- 运行并分析了基础项目结构;
- 学习了
main.ts
,app.module.ts
,app.controller.ts
,app.service.ts
的功能。
🔮 下一篇预告
第2篇:理解模块系统 Module 与依赖注入 DI 机制