# 模块

  • 概述:模块是带有@Module()装饰器的类。
  • 使用cli创建控制器
nest g mo module_name --no-spec --flat
  • @Module()装饰器接受一个单一的对象做为参数
参数名 描述
providers 将由Nest注入器实例化并且至少可以在该模块中共享的提供程序。
controllers 此模块中定义的所有控制器。
imports 此模块所需的提供程序的导入模块列表。
exports 这个模块提供的providers的子集(需要存在providers中),配置之后可以在引入此模块的其他模块中可用。
/* test.module.ts */
import { Module } from '@nestjs/common'
import { TestController } from './test.controller.ts'
import { TestService } from './test.service.ts'

@Module({
  controllers: [TestController],
  providers: [TestService]
})
export class TestModule {}

# exports

  • 概述:如果需要再模块之间共享Service,需要将其添加到模块的exports数组中
/* test.module.ts */
import { Module } from '@nestjs/common'
import { TestController } from './test.controller.ts'
import { TestService } from './test.service.ts'

@Module({
  controllers: [TestController],
  providers: [TestService],
  exports: [TestService]
})
export class TestModule {}

# 全局模块

  • 概述:可以使用Global()装饰器使得模块全局化。
/* test.module.ts */
import { Module, Global } from '@nestjs/common'
import { TestController } from './test.controller.ts'
import { TestService } from './test.service.ts'

@Global()
@Module({
  controllers: [TestController],
  providers: [TestService]
})
export class TestModule {}

# 动态模块