目录
动态模块
在《模块》章节中,介绍了 Nest 模块的基础知识,并简要介绍了动态模块。 本章将深入探讨动态模块的主题。 完成后,您应该能够很好地理解它们是什么,以及何时以及如何使用它们。
介绍
文档概述部分的大多数应用代码示例都使用常规或静态模块。 模块定义了组件(如提供者和控制器)的分组,它们作为整个应用程序的模块化部分一起配合。 它们为这些组件提供执行上下文或范围。 例如,在模块中定义的提供者可以在模块的其他成员中可见,无需导出它们。 当需要在模块外部可见提供者时,首先要将它从其宿主模块导出,然后导入到其使用模块中。
让我们通过一个熟悉的示例来了解。
首先,我们将定义一个UsersModule来提供和导出UsersService。
UsersModule是UsersService的宿主模块。
import { Module } from '@nestjs/common';
import { UsersService } from './users.service';
@Module({
providers: [UsersService],
exports: [UsersService],
})
export class UsersModule {}
接下来,我们将定义一个AuthModule,
它导入UsersModule,从而使UsersModule导出的提供者在AuthModule内部可用:
import { Module } from '@nestjs/common';
import { AuthService } from './auth.service';
import { UsersModule } from '../users/users.module';
@Module({
imports: [UsersModule],
providers: [AuthService],
exports: [AuthService],
})
export class AuthModule {}