004模块(module)

一、介绍

模块是用 @Module() 装饰器注释的类。@Module() 装饰器提供 Nest 用于组织应用结构的元数据。

每个应用至少有一个模块,即根模块。也就是app.module
这个类似于前端的组件,都需要要一个根组件,同时也是推荐的构建程序的有效方式。(前端组件,后端模块)
他的配置中包含以下几个属性:

属性名 描述
providers 将由 Nest 注入器实例化并且至少可以在该模块中共享的提供程序
controllers 此模块中定义的必须实例化的控制器集
imports 导出此模块所需的提供程序的导入模块列表
exports 这个模块提供的 providers 的子集应该在导入这个模块的其他模块中可用。你可以使用提供器本身或仅使用其令牌(provide 值)

二、分类

1.功能模块

我们之前写的cats就是一个功能模块
只不过他也是程序的根模块
现在我们把它抽离到单独的模块中,并在根模块中导入

import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';

@Module({
  controllers: [CatsController],
  providers: [CatsService],
})
export class CatsModule {}

在根模块导入

import { Module } from '@nestjs/common';
import { CatsModule } from './cats/cats.module';

@Module({
  imports: [CatsModule],
})
export class AppModule {}

现在cats就是一个独立的功能模块

2.共享模块

每一个模块在创建后就自动成为共享模块。一旦创建,它就可以被任何模块重用,只需要在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 {}

3.全局模块

只需要在模块上加入@Global()装饰器

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

4.动态模块

也就是自定义模块,后续单独介绍,我们现在只看个例子

import { Module, DynamicModule } from '@nestjs/common';
import { createDatabaseProviders } from './database.providers';
import { Connection } from './connection.provider';

@Module({
  providers: [Connection],
})
export class DatabaseModule {
  static forRoot(entities = [], options?): DynamicModule {
    const providers = createDatabaseProviders(options, entities);
    return {
      module: DatabaseModule,
      providers: providers,
      exports: providers,
    };
  }
}

整体就是实现forRoot方法

posted @ 2024-04-11 10:59  我喝牛奶不舔盖  阅读(14)  评论(0)    收藏  举报
I hear and I forget. I see and I remember. I do and I understand