Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的开发框架。它利用 JavaScript 的渐进增强的能力,使用并完全支持 TypeScript (仍然允许开发者使用纯 JavaScript 进行开发),并结合了 OOP (面向对象编程)、FP (函数式编程)和 FRP (函数响应式编程)。
- 在底层,Nest 构建在强大的 HTTP 服务器框架上,例如 Express (默认),并且还可以通过配置从而使用 Fastify !
- Nest 在这些常见的 Node.js 框架 (Express/Fastify) 之上提高了一个抽象级别,但仍然向开发者直接暴露了底层框架的 API。这使得开发者可以自由地使用适用于底层平台的无数的第三方模块。
本文基于nest8演示
# 基础
# 创建项目
$ npm i -g @nestjs/cli
@前端进阶之旅: 代码已经复制到剪贴板
nest new project-name 创建一个项目
$ tree
.
├── README.md
├── nest-cli.json
├── package.json
├── src
│ ├── app.controller.spec.ts
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── app.service.ts
│ └── main.ts
├── test
│ ├── app.e2e-spec.ts
│ └── jest-e2e.json
├── tsconfig.build.json
└── tsconfig.json
2 directories, 12 files
@前端进阶之旅: 代码已经复制到剪贴板
以下是这些核心文件的简要概述:
app.controller.ts带有单个路由的基本控制器示例。app.module.ts应用程序的根模块。main.ts应用程序入口文件。它使用 NestFactory 用来创建 Nest 应用实例。
main.ts包含一个异步函数,它负责引导我们的应用程序:
import { NestFactory } from '@nestjs/core';
import { ApplicationModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(ApplicationModule);
await app.listen(3000);
}
bootstrap();
@前端进阶之旅: 代码已经复制到剪贴板
NestFactory暴露了一些静态方法用于创建应用实例create()方法返回一个实现INestApplication接口的对象, 并提供一组可用的方法
nest有两个支持开箱即用的 HTTP 平台:express和fastify。 您可以选择最适合您需求的产品
platform-expressExpress 是一个众所周知的 node.js 简约 Web 框架。 这是一个经过实战考验,适用于生产的库,拥有大量社区资源。 默认情况下使用@nestjs/platform-express包。 许多用户都可以使用Express,并且无需采取任何操作即可启用它。platform-fastifyFastify是一个高性能,低开销的框架,专注于提供最高的效率和速度。
# Nest控制器
Nest中的控制器层负责处理传入的请求, 并返回对客户端的响应。

控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器有