NestJS 系列教程(一):认识 NestJS 与项目初始化

发布于:2025-07-04 ⋅ 阅读:(14) ⋅ 点赞:(0)

🚀 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 会提示你选择包管理器,推荐选择 npmyarn

初始化成功后,项目结构如下:

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 机制


网站公告

今日签到

点亮在社区的每一天
去签到