NgModules > Types de modules de fonctionnalités

Références

L'actualité

Librairie

L'information

Types de modules de fonctionnalités

Il existe cinq catégories générales de modules de fonctionnalités qui appartiennent généralement aux groupes suivants :

  • Modules de fonctionnalité de domaine.
  • Modules de fonctionnalité routés.
  • Modules de routage.
  • Modules de service.
  • Modules de fonctionnalité de widget.

Bien que les instructions suivantes décrivent l'utilisation de chaque type et leurs caractéristiques typiques, dans les applications du monde réel, il est possible que vous voyiez des hybrides.

Module de fonctionnalité Des lignes directrices
Domain Les modules de fonctionnalités de domaine offrent une expérience utilisateur dédiée à un domaine d'application particulier, comme la modification d'un client ou la passation d'une commande.

Ils ont généralement un composant supérieur qui joue le rôle de racine de fonctionnalité et de composant privé, les sous-composants de prise en charge en descendant.

Les modules de fonctionnalité de domaine sont principalement constitués de déclarations. Seul le composant supérieur est exporté.

Les modules de fonctionnalité de domaine ont rarement des fournisseurs. Lorsqu'ils le font, la durée de vie des services fournis doit être identique à celle du module.

Les modules de fonctionnalité de domaine sont généralement importés une seule fois par un module de fonctionnalité plus grand.

Ils peuvent être importés par la racine AppModule d'une petite application dépourvue de routage.

Routed Les modules de fonctionnalité routés sont des modules de fonctionnalité de domaine dont les composants principaux sont les cibles des itinéraires de navigation du routeur.

Tous les modules paresseux chargés sont par définition des modules routés.

Les modules de fonctions routées n'exportent rien car leurs composants n'apparaissent jamais dans le modèle d'un composant externe.

Un module de fonctionnalité routé chargé paresseux ne doit pas être importé par aucun module. Cela provoquerait un chargement enthousiaste, contrecarrant le but du chargement paresseux. Cela signifie que vous ne les verrez pas mentionnés parmi les AppModule importations. Un module de fonctionnalité routé chargé doit être importé par un autre module afin que le compilateur découvre ses composants.

Les modules de fonctionnalité routés ont rarement des fournisseurs pour des raisons expliquées dans chargement de modules de fonctionnalité paresseux. Lorsqu'ils le font, la durée de vie des services fournis doit être identique à celle du module. Ne fournissez pas de services singleton à l'échelle de l'application dans un module à fonctionnalités routées ou dans un module importé par le module routé.

Routing Un module de routage fournit une configuration de routage pour un autre module et sépare les problèmes de routage de son module compagnon.

Un module de routage effectue généralement les tâches suivantes:

  • Définit les itinéraires.
  • Ajoute la configuration du routeur aux importations du module.
  • Ajoute des fournisseurs de services de garde et de résolveur aux fournisseurs du module.
  • Le nom du module de routage doit être parallèle à celui de son module compagnon, en utilisant le suffixe "Routing". Par exemple, FooModule dans foo.module.ts a un module de routage nommé FooRoutingModule dans foo-routing.module.ts. Si le module associé est la racine AppModule, la configuration AppRoutingModule du routeur est ajoutée à ses importations avec RouterModule.forRoot(routes). Tous les autres modules de routage sont des enfants à importer RouterModule.forChild(routes).
  • Un module de routage l'exporte RouterModuleà nouveau de manière pratique pour que ses composants aient accès aux directives de routeur telles que RouterLink et RouterOutlet.
  • Un module de routage n'a pas ses propres déclarations. Les composants, les directives et les canaux relèvent de la responsabilité du module de fonctionnalité, et non du module de routage.
Un module de routage ne doit être importé que par son module d'accompagnement.

Service Les modules de service fournissent des services utilitaires tels que l'accès aux données et la messagerie. Idéalement, ils sont entièrement constitués de fournisseurs et n'ont aucune déclaration. Angular HttpClientModule est un bon exemple de module de service.

La racine AppModule est le seul module devant importer des modules de service.

Widget Un module de widget met des composants, des directives et des canaux à la disposition des modules externes. De nombreuses bibliothèques de composants d'interface utilisateur tierces sont des modules de widgets.

Un module de widget doit être entièrement constitué de déclarations, la plupart exportées.

Un module de widget devrait rarement avoir des fournisseurs.

Importez des modules de widgets dans tous les modules dont les modèles de composants ont besoin des widgets.
Le tableau suivant récapitule les principales caractéristiques de chaque groupe de modules.

Module de fonctionnalité Les déclarations Fournisseurs Exportations Importé par
Domain Oui Rare Composant supérieur Caractéristique, AppModule
Routed Oui Rare Non Aucun
Routing Non Oui (gardes) RouteurModule Caractéristique (pour le routage)
Service Non Oui Non AppModule
Widget Oui Rare Oui Fonctionnalité