Dynamic Module

NestJS 🟡 Mid

Definition

Module configurable via une methode statique (forRoot/forRootAsync) qui retourne un DynamicModule. Permet de passer des options de configuration a l'import.

Analogie

Comme un abonnement telephonique : le meme operateur mais tu choisis ton forfait (options) a la souscription.

Exemple de code

@Module({})
export class MailModule {
  static forRoot(config: MailConfig): DynamicModule {
    return {
      module: MailModule,
      providers: [{ provide: 'MAIL_CONFIG', useValue: config }, MailService],
      exports: [MailService],
    };
  }
}

Cas d'usage

Creer des modules reutilisables comme les modules de config, cache ou mail avec des parametres variables.

Anti-pattern

Hardcoder la configuration directement dans le module au lieu de la rendre injectable.
#core#architecture#interview