在 NestJS 模块(Module)中,providersexports 两个属性有不同的作用和用途。

  1. providers

    • providers 属性用于声明该模块提供的服务(Service)或提供者(Provider)。
    • providers 数组中列出的服务将在该模块的上下文中创建和管理,并且可以在模块的组件(例如控制器、其他服务等)中通过依赖注入来使用。
    • 通常,你将在 providers 数组中列出你的服务类,以便它们可以被其他组件注入和使用。
    • 示例:
    @Module({
      providers: [AuthService, UserService],
    })
    export class AuthModule {}
  2. exports

    • exports 属性用于声明该模块中哪些服务可以被其他模块导出和使用。
    • exports 数组中列出的服务将在模块之外可见,其他模块可以将它们导入并使用。
    • 如果你希望其他模块能够访问当前模块中的某些服务,你需要将这些服务列在 exports 数组中。
    • 示例:
    @Module({
      providers: [AuthService, UserService],
      exports: [AuthService], // 导出 AuthService,使其可以在其他模块中使用
    })
    export class AuthModule {}

总结:

  • providers 用于声明模块内部的服务,它们在模块内创建和管理。
  • exports 用于声明哪些服务可以被其他模块访问,它们可以在其他模块中导入并使用。

使用这两个属性,你可以控制模块的可见性,使某些服务只在模块内部使用,而将另一些服务暴露给其他模块。这有助于将 NestJS 应用程序构建成模块化和可维护的结构。

发表评论