📢 Je vous présente le livre Angular

  • 1) Il offre un contenu clair et concis, tout en couvrant une multitude de concepts d'Angular.
  • 2) Le livre est structurĂ© en trois niveaux : dĂ©butant, intermĂ©diaire et avancĂ©
  • 3) traite des pratiques les plus rĂ©centes d'Angular, comme les signaux, les vues diffĂ©rĂ©es, la gestion des flux, entre autres
  • 4) De plus, vous y trouverez plusieurs liens vers des exemples de code source pour approfondir vos connaissances en pratique.

Skip to content

Structurer et organiser son application ​

Imaginez que nous construisons une application e-commerce. Voici une structure possible pour cette application en utilisant des modules :

plaintext
e-commerce-app/
│
├── src/
│   ├── app/
│   │   ├── app.module.ts          # Module racine
│   │   ├── app.component.ts       # Composant racine
│   │   ├── app-routing.module.ts  # Configuration du routage principale
│   │   │
│   │   ├── core/                  # Module core pour les services singleton, les composants shell, etc.
│   │   │   ├── core.module.ts
│   │   │   ├── header/
│   │   │   ├── footer/
│   │   │   ├── services/
│   │   │   │   ├── auth.service.ts
│   │   │   │   ├── user.service.ts
│   │   │   └── ...
│   │   │
│   │   ├── shared/                # Module partagé pour les composants, directives, et pipes réutilisables
│   │   │   ├── shared.module.ts
│   │   │   ├── buttons/
│   │   │   ├── utilities/
│   │   │   └── ...
│   │   │
│   │   ├── products/             # Module de produits
│   │   │   ├── products.module.ts
│   │   │   ├── product-list/
│   │   │   ├── product-detail/
│   │   │   ├── product.service.ts
│   │   │   └── ...
│   │   │
│   │   ├── users/                # Module des utilisateurs
│   │   │   ├── users.module.ts
│   │   │   ├── profile/
│   │   │   ├── settings/
│   │   │   ├── users.service.ts
│   │   │   └── ...
│   │   │
│   │   ├── cart/                 # Module du panier
│   │   │   ├── cart.module.ts
│   │   │   ├── cart-page/
│   │   │   ├── cart-summary/
│   │   │   ├── cart.service.ts
│   │   │   └── ...
│   │   │
│   │   └── orders/               # Module des commandes
│   │       ├── orders.module.ts
│   │       ├── order-list/
│   │       ├── order-detail/
│   │       ├── orders.service.ts
│   │       └── ...
│   │
│   ├── assets/
│   ├── environments/
│   └── ...
│
├── node_modules/
├── angular.json
├── package.json
└── ...

Explications :

  • app.module.ts: C'est le module racine qui initialise l'application.

  • core/: Le module "core" contient des Ă©lĂ©ments qui sont crĂ©Ă©s une seule fois et ne sont jamais rĂ©importĂ©s (comme les services qui doivent ĂŞtre des singletons).

  • shared/: Le module "shared" contient des composants, des directives et des pipes qui sont souvent rĂ©utilisĂ©s dans toute l'application.

  • products/, users/, cart/, orders/: Ces sont des modules fonctionnels. Chacun de ces modules reprĂ©sente une fonctionnalitĂ© ou une partie distincte de l'application.

Cette structure suit les meilleures pratiques d'Angular pour organiser les modules et les composants en fonction de leur responsabilité et de leur réutilisabilité.

Bonnes pratiques ​

  1. Ajoutez le suffixe Module au nom du symbole. Donner au nom du fichiez l'extension .module.ts. Nommez le module d'après la fonctionnalité et le dossier dans lequel il se trouve.

Exemple:

ts
@NgModule({ … }) 
export class AppModule { }
  1. Structurez l'application de manière à pouvoir localiser rapidement le code, à l'identifier d'un coup d'œil, à conserver la structure la plus plate possible. Suivez la méthode LIFT.

Méthode LIFT (tirée du site officiel)

La méthode LIFT est une approche pour structurer et nommer les fichiers de code de manière à améliorer l'efficacité et la lisibilité du code. Elle est composée de quatre étapes principales :

  1. Localiser (Locate)

    • Style 04-02 : Il est recommandĂ© de rendre le repĂ©rage du code intuitif et rapide.
    • Pourquoi ? Pour travailler efficacement, il est essentiel de pouvoir trouver rapidement les fichiers, surtout lorsque l'on ne connaĂ®t pas (ou ne se souvient pas) de leur nom. Le fait de garder des fichiers liĂ©s Ă  proximitĂ© les uns des autres dans un emplacement intuitif permet de gagner du temps. Une structure de dossiers descriptive fait toute la diffĂ©rence pour vous et ceux qui vous succĂ©deront.
  2. Identifier (Identify)

    • Style 04-03 : Nommez le fichier de manière Ă  savoir immĂ©diatement ce qu'il contient et ce qu'il reprĂ©sente. Soyez descriptif avec les noms de fichiers et limitez le contenu du fichier Ă  un seul composant. Évitez les fichiers avec plusieurs composants, services ou mĂ©langes.
    • Pourquoi ? Cela rĂ©duit le temps de recherche et rend le processus plus efficace. Les noms de fichiers plus longs sont nettement prĂ©fĂ©rables aux noms abrĂ©gĂ©s mais obscurs. Il peut ĂŞtre avantageux de s'Ă©carter de la règle "un Ă©lĂ©ment par fichier" dans certaines situations, mais faites attention Ă  cette exception.
  3. Aplatir (Flat)

    • Style 04-04 : Gardez une structure de dossiers plate aussi longtemps que possible. Pensez Ă  crĂ©er des sous-dossiers lorsqu'un dossier contient sept fichiers ou plus. Envisagez de configurer votre IDE pour masquer les fichiers non pertinents ou gĂ©nĂ©rĂ©s.
    • Pourquoi ? Personne ne souhaite chercher un fichier Ă  travers de multiples niveaux de dossiers. Une structure plate est plus facile Ă  parcourir. Lorsqu'un dossier contient dix fichiers ou plus, il peut ĂŞtre temps de crĂ©er des sous-dossiers. Basez votre dĂ©cision sur votre niveau de confort.
  4. T-DRY (Essayez d'ĂŞtre DRY)

    • Style 04-05 : Il est recommandĂ© de suivre le principe DRY (Ne Vous RĂ©pĂ©tez Pas). Cependant, Ă©vitez d'ĂŞtre trop DRY au dĂ©triment de la lisibilitĂ©.
    • Pourquoi ? ĂŠtre DRY est important, mais cela ne doit pas sacrifier les autres Ă©lĂ©ments de LIFT. C'est pour cela que cela s'appelle T-DRY. Par exemple, il serait redondant de nommer un modèle "hero-view.component.html" car avec l'extension ".html", il est Ă©vident qu'il s'agit d'une vue. Cependant, si quelque chose n'est pas Ă©vident ou s'Ă©carte d'une convention, explicitez-le.
  1. Commencez modestement, mais gardez à l'esprit l'orientation future de l'application. Ayez une vision à court terme de la mise en œuvre et une vision à long terme. Placer tout le code de l'application dans un dossier nommé src. Envisager la création d'un dossier pour un composant lorsqu'il comporte plusieurs fichiers d'accompagnement (.ts, .html, .css et .spec).

  2. Créez des dossiers portant le nom de la fonctionnalité qu'ils représentent. Lorsqu'il y a beaucoup de fichiers, par exemple plus de 10, il est plus facile de les localiser avec une structure de dossiers cohérente et plus difficile avec une structure plate.

  3. Créer un module de fonctionnalité nommé SharedModule dans un dossier partagé ; par exemple, app/shared/shared.module.ts définit SharedModule. Déclarez des composants, des directives et des pipes dans un module partagé lorsque ces éléments seront réutilisés et référencés par les composants déclarés dans d'autres modules fonctionnels. Envisagez de ne pas fournir de services dans les modules partagés. Les services sont généralement des singletons qui sont fournis une seule fois pour l'ensemble de l'application ou dans un module particulier. (sauf si le service est propre au SharedModule, comme un simple filtre) Voir SharedModule.

Chaque mois, recevez en avant-première notre newsletter avec les dernières actualités, tutoriels, astuces et ressources Angular directement par email !