Node.js又一框架:Nest.js(二)

809 阅读2分钟

核心基础知识:了解基本的 Nest 应用程序构建模块。

构建项目

# npm
npm i -g @nestjs/cli
# yarn
yarn global add @nestjs/cli

nest new project-nest

运行上述命令,将创建 project-nest 项目目录,安装 node_modules 和一些其他样板文件,并创建一个 src 目录。

使用 Nest CLI 搭建项目会创建一个初始项目结构。但建议:将每个模块保存在自己的专用目录中

# 初始项目结构
project-nest
├── dist
│   ├── app.controller.d.ts
│   ├── app.controller.js
│   ├── app.controller.js.map
│   ├── app.module.d.ts
│   ├── app.module.js
│   ├── app.module.js.map
│   ├── app.service.d.ts
│   ├── app.service.js
│   ├── app.service.js.map
│   ├── main.d.ts
│   ├── main.js
│   ├── main.js.map
│   └── tsconfig.build.tsbuildinfo
├── nest-cli.json
├── package.json
├── README.md
├── readmeup.md
├── 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
└── yarn.lock

核心文件

├── src
│   ├── app.controller.spec.ts   # 对于基本控制器的单元测试样例
│   ├── app.controller.ts        # 带有单个路由的基本控制器示例
│   ├── app.module.ts            # 应用程序的根模块
│   ├── app.service.ts           # 带有单个方法的基本服务
│   └── main.ts                  # 应用程序入口文件

main.ts 使用 NestFactory 创建 Nest 应用实例。

/**
* @description: 应用程序入口文件
* @update: 2021-09-07 21:12:01
* @author: Ada.H
*/

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  // 使用 NestFactory 核心类创建一个 Nest 应用实例 app
  // create() 方法返回一个实现 INestApplication 接口的对象
  const app = await NestFactory.create(AppModule); 
  
  // 启动 HTTP 服务器
  await app.listen(3000);
}

bootstrap();

平台无关

Nest 旨在成为一个与平台无关的框架,在创建适配器后可以使用任何 Node HTTP 框架。有两个支持开箱即用的 HTTP 平台:Express(默认)和 Fastify

平台名称平台特点
platform-express众所周知;简约;经过实战考验,适用于生产;拥有大量的社区资源;无需采取任何操作即可启用。
platform-fastify高性能,低开销,专注于效率和速度。
// 将类型传递给 NestFactory.create() 函数时,app 对象将具有专用于该特定平台的函数。
const app = await NestFactory.create<NestExpressApplication>(AppModule);

请注意:除非确实要访问底层平台 API,否则无需指定类型