Nestjs中的模块

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

Nestjs中的模块

一、关于Nestjs中的模块

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

文档: https://docs.nestjs.com/modules

一、关于Nestjs中的模块

每个 Nest 应用程序至少有一个模块,即根模块。根模块是 Nest 开始安排应用程序树的地方。事实上,根模块可能是应用程序中唯一的模块,特别是当应用程序很小时,但是对于大型程序来说这是没有意义的。在大多数情况下,您将拥有多个模块,每个模块都有一组紧密相关的功能。

@module() 装饰器接受一个描述模块属性的对象:
providers		由 Nest 注入器实例化的提供者,并且可以至少在整个模块中共享
controllers	必须创建的一组控制器
imports	导入模块的列表,这些模块导出了此模块中所需提供者
exports	由本模块提供并应在其他模块中可用的提供者的子集

二、Nestjs中创建模块

nest g module admin

Nestjs中的模块

三、Nestjs中的共享模块

实际上,每个模块都是一个共享模块。一旦创建就能被任意模块重复使用。假设我们将在几个模块之间共享 CatsService 实例。 我们需要把 CatsService 放到 exports 数组中,如下所 示:

import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Module({
  controllers: [CatsController],
  providers: [CatsService],
  exports: [CatsService]
})
export class CatsModule {}