一、介绍
模块是用 @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方法
标签:providers,CatsService,Module,cats,模块,004,import From: https://www.cnblogs.com/idrinkmilk/p/18128393