nest.js 基础

构建 nest.js 项目

方式一:使用 Nest CLI 构建项目,请运行以下命令

$ npm i -g @nestjs/cli // 安装 nest 脚手架
$ nest new project-name // 使用脚手架创建项目
复制代码

1657893882692.png

1657893932636.png

1657894105851(1).png

方式二:使用 Git 安装采用 TypeScript 开发的 starter 项目:

$ git clone https://github.com/nestjs/typescript-starter.git project
$ cd project
$ npm install
$ npm run start:dev
复制代码

打开浏览器并导航到 http://localhost:3000/ 地址。

1658028207971.png 项目目录结构:

1658046073981(1).png

① app.controller.ts 带有单个路由的基本控制器;
② app.controller.spec.ts 针对控制器的单元测试;
③ app.module.ts 应用程序的根模块(root module);
④ app.service.ts 具有单一方法的基本服务(service);
⑤ main.ts 应用程序的入口文件,它使用核心函数 NestFactory 来创建 Nest 应用程序的实例。

// src/main.ts:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule); // 创建 nest 应用实例;
  await app.listen(3000); // 监听 3000 端口;
}
bootstrap();
复制代码
// src/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 {}
复制代码
// src/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();
  }
}
复制代码
// src/app.service.ts:
import { Injectable } from '@nestjs/common';

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

控制器(controllers)

控制器负责处理传入的 请求 并将 响应 返回给客户端。 image.png

提供者(Providers)

Providers是 Nest 中的一个基本概念。许多Nest类可以是 Provider:Service、Repository、Factory、Helper等。Provider 只是一个用 @Injectable() 装饰器注释的类,它可以注入依赖项,在对象之间创建各种关系。 image.png

模块(Modules)

模块是具有 @Module() 装饰器的类。 @Module() 装饰器提供了元数据,Nest 用它来组织应用程序结构。 image.png

1658103968222.png

拓展

Nest.js学习笔记7:提供者(Provider)
Nestjs中关于模块和模块的共享

分类:
前端
标签: