什么是 NestJS,为什么需要它?
\nNestJS 是一个用于在 Node.js 上构建高效、可靠且可扩展的服务器端应用程序的渐进式框架。它采用了受 Angular 启发的富有表现力的架构,默认基于 TypeScript 构建,但完全支持纯 JavaScript。NestJS 抽象了诸如 Express(默认)或 Fastify 等流行库的底层细节,为开发者提供了一套强大的代码组织工具:模块、控制器、服务、提供者、中间件、守卫、拦截器、管道和过滤器。
\n为什么需要 NestJS?在现代 Node.js 网络开发中,代码组织常常成为问题:简单的 Express 脚本随着功能增长很快就会变成“意大利面条式代码”。NestJS 通过强制采用清晰的模块化结构和依赖注入(Dependency Injection)原则解决了这个问题。这使得应用程序的测试、维护和扩展变得更加容易。该框架非常适合构建 REST API、GraphQL 服务器、微服务以及实时应用程序(WebSockets)。
\nNestJS 的关键优势在于其生态系统。它提供了用于数据库操作(TypeORM、Mongoose、Prisma)、身份验证(Passport)、验证(class-validator)、配置、队列(Bull)、缓存等众多功能的官方模块。得益于此,开发者可以专注于业务逻辑,而不是集成各种不同的库。
\n\n安装
\n安装 NestJS 需要使用包管理器 npm(或 yarn)。建议全局安装 CLI 工具以便快速创建项目:
\nnpm install -g @nestjs/cli\n 安装 CLI 后,您可以使用以下命令创建一个新项目:
\nnest new my-nest-project\n 在安装过程中,系统会提示您选择包管理器(npm、yarn 或 pnpm)和语言(推荐 TypeScript,或 JavaScript)。如果您想将 NestJS 添加到现有项目中,请安装核心包:
\nnpm install @nestjs/core @nestjs/common @nestjs/platform-express reflect-metadata rxjs\n 请注意:reflect-metadata 库是装饰器正常工作所必需的。
快速入门:最小工作示例
\n让我们创建一个最简单的 REST API,其中包含一个返回 "Hello World" 的端点。
\n步骤 1:创建文件 app.controller.js
// app.controller.js\nconst { Controller, Get } = require('@nestjs/common');\n\n@Controller()\nexport class AppController {\n @Get()\n getHello() {\n return 'Hello World!';\n }\n}\n 步骤 2:创建文件 app.module.js
// app.module.js\nconst { Module } = require('@nestjs/common');\nconst { AppController } = require('./app.controller');\n\n@Module({\n controllers: [AppController],\n})\nexport class AppModule {}\n 步骤 3:创建主文件 main.js
// main.js\nconst { NestFactory } = require('@nestjs/core');\nconst { AppModule } = require('./app.module');\n\nasync function bootstrap() {\n const app = await NestFactory.create(AppModule);\n await app.listen(3000);\n console.log('服务器已启动,地址为 http://localhost:3000');\n}\nbootstrap();\n 步骤 4:运行应用程序
\nnode main.js\n 现在,请访问 http://localhost:3000——您将看到 "Hello World!"。
主要方法、类和装饰器
\n以下是 8 个关键元素