配置项模块
全局模块#
如果你必须在所有地方导入相同的模块集,它会变得乏味。与 Nest 不同,Angularproviders 是在全局作用域内注册的。一旦定义,它们随处可用。然而,Nest 将提供程序封装在模块作用域内。如果不首先导入封装模块,则无法在其他地方使用模块的提供程序。exports别忘记
当你想要提供一组开箱即用的提供程序(例如辅助程序、数据库连接等)时,请使用 @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 {}
可选提供器#
有时,你可能有不一定要解决的依赖。例如,你的类可能依赖于配置对象,但如果没有传递任何内容,则应使用默认值。在这种情况下,依赖变为可选,因为缺少配置提供程序不会导致错误。
要指示提供器是可选的,请在构造函数的签名中使用 @Optional() 装饰器。
点击查看代码
import { Injectable, Optional, Inject } from '@nestjs/common';
@Injectable()
export class HttpService<T> {
constructor(@Optional() @Inject('HTTP_OPTIONS') private httpClient: T) {}
}
Nest 模块系统包含一个称为动态模块的强大功能。此功能使你能够轻松创建可自定义的模块,这些模块可以动态注册和配置提供程序。此处 广泛介绍了动态模块。在本章中,我们将给出一个简短的概述来完成对模块的介绍
点击查看代码
import { Module, DynamicModule } from '@nestjs/common';
import { createDatabaseProviders } from './database.providers';
import { Connection } from './connection.provider';
@Module({
providers: [Connection],
exports: [Connection],
})
export class DatabaseModule {
static forRoot(entities = [], options?): DynamicModule {
const providers = createDatabaseProviders(options, entities);
return {
module: DatabaseModule,
providers: providers,
exports: providers,
};
}
}
forRoot() 方法可以同步或异步(即通过 Promise)返回动态模块。
模块的使用和配置全局以及导出和引入
服务装饰器默认值配置
动态模块搭配(自定义配置)传递服务提供注入参数传递
本文来自博客园,作者:jialiangzai,转载请注明原文链接:https://www.cnblogs.com/zsnhweb/articles/18344105

浙公网安备 33010602011771号