NestJS for TypeScript:完整指南与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

NestJS 简介



NestJS (Nest) 是一个渐进式框架,用于在 Node.js 上构建高效、可扩展且可靠的服务器端应用程序。它使用 TypeScript 作为主要语言,并受到 Angular 架构的启发。NestJS 提供了现成的应用程序架构,帮助开发者创建结构良好、可测试且易于维护的代码。



NestJS 的主要目标是解决 Node.js 生态系统中缺乏清晰架构的问题。与 Express 或 Fastify 等极简且不强制结构的框架不同,NestJS 提供了现成的抽象层:模块、控制器、服务、提供者和中间件。这对于注重代码可预测性和标准化的大型企业项目尤其有用。



NestJS 构建在 HTTP 框架之上(默认使用 Express,但也可以使用 Fastify),并在此基础上增加了强大的依赖注入系统、装饰器、守卫、拦截器、管道和过滤器。该框架大量使用 TypeScript 装饰器,使代码具有声明性和可读性。



安装 NestJS



要安装 NestJS,您需要 Node.js(版本 16 或更高)和包管理器 npm(或 yarn、pnpm)。



最简单的入门方法是使用 Nest CLI:



npm install -g @nestjs/clinest new my-nest-projectcd my-nest-projectnpm run start:dev


如果您希望将 NestJS 安装到现有项目中:



npm install @nestjs/core @nestjs/common @nestjs/platform-express reflect-metadata rxjs typescript @types/node


此外,还需要安装 TypeScript 和 ts-node 用于开发:



npm install -D typescript @types/node ts-node


重要提示:NestJS 使用 reflect-metadata 库来处理装饰器。请确保在主文件 main.ts 中导入它:



import "reflect-metadata";


快速入门及代码示例



让我们创建一个简单的 REST API 应用程序,其中包含一个返回问候语的端点。



项目结构:

src/├── app.controller.ts├── app.module.ts├── app.service.ts└── main.ts


main.ts — 入口点:

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('Server is running on http://localhost:3000');}bootstrap();


app.module.ts — 根模块:

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() getHello(): string { return this.appService.getHello(); }}


app.service.ts — 服务(业务逻辑):

import { Injectable } from '@nestjs/common';

@Injectable()export class AppService { getHello(): string { return 'Hello World!'; }}


使用命令 npm run start:dev 启动应用程序,然后打开 http://localhost:3000。您将看到 "Hello World!"。



NestJS 的主要方法和功能



让我们看看每个项目中都会用到的 10 个 NestJS 关键元素。



1. @Module() — 模块装饰器

作用: 定义类

推荐