Académique Documents
Professionnel Documents
Culture Documents
Angular Framework
Architecture Web
Angular est un Framework open source écrit en JavaScript qui permet de créer des
applications Web SPA « Single Page Applications »
Une application de type SPA contient une seule parge HTML
Java Script est utilisé pour naviguer entre les différentes parties de cette application
en envoyant les requêtes http (AJAX) vers le serveur pour récupérer du contenu
généralement au format JSON
Ce contenu JSON est ensuite formaté pour coté client pour être affiché en HTML dans
la même page
Les version de Angular
Angular 1, 2, 4, … 12
Type Script est un langage structuré et orienté objet qui permet de simplifier les
application Java Script
Langage structuré
et orienté objet
Démarrer avec Angular
Installation des outils
app.module.ts
Structure d’un projet Angular
app.component.ts
app.component.html
app.component.css
Fichier de test unitaires. La convention voudrais qu’on ait un fichier .spec.ts pour
chaque fichier .ts ils sont executes à l’aide du framework de test js Jasmine via le
programme de tâche Karma lorsque vous exécutez la commande: “ng test”
Structure d’un module
Angular est un framework destiné au développement font end des applications
web en utilisant du html et JavaScript
Une application Angular se compose de:
Un ou plusieurs modules dont un module principal
Chaque module peut inclure:
Des composants web : partie visible de l’application
Des services pour la logique applicative: les composants peuvent utiliser les services via le principe de
l’injection de dépendance
Les directives: un composant peut utiliser des tractives
Les pipes: utilisés pour formater l’affichage des données dans les composants
Structure d’un web component
Les composants sont les élements important de Angular
L’application est formée d’un ensemble de composants
Chaque composant peut imbriquer d’autre composants formant ainsi une
structure hiérarchique
Le composant racine s’appelle Root Component
Root Component
Component 1 Component 2 Component 3
Component 6
Component 4
Component 5
Création de nouveaux composants
Pour créer facilement des composants Angular, on peut utiliser à nouveau la
commande ng comme suit:
o ng generate component nom-du-composant (ng g c nom-du-composant)
Dans notre exemple, nous allons créer deux composants: about et contacts
Structure du composant about
about.component.ts
about.component.html
about.component.css
Structure du composant contact
contacts.component.ts
contacts.component.html
contacts.component.css
Vue interne d’un composant
@Component
Un composant est une classe qui possède le décorateur
@Component.
Ce décorateur possède les propriétés suivantes:
Selector: indique le type d’élément permettant d’insérer le
composant dans le template html. Ce type peut être:
Le nom de la balise associée à ce composant
Selector : app-about
Dans ce cas, le composant sera inséré par: <app-about></app-about>
Le nom de l’attribut associée à ce composant
Selector : [app-about]
Dans ce cas, le composant sera inséré par: <div app-about></div>
Le nom de la classe associée à ce composant
Selector : .app-about
Dans ce cas, le composant sera inséré par: <div class=“app-about”></div>
template ou templateUrl:
template: permet de définir à l’intérieur du décorateur le code html qui représente
la vue du composant
templateUrl: permet d’associer un fichier html qui représente la vue du composant
styleUrls: permet de spécifier les feuilles styles associées à ce
composant
Déclaration d’un composant
Pour utiliser un composant, ce dernier doit être déclaré dans le
module
Utilisation des composants
Un composant peut être inséré dans n’importe quelle partie HTML de
l’application en utilisant son sélecteur associé;
Dans cet exemple, les deux composants générés sont insérés à l’intérieur du
composant racine AppComponent
Data binding
Pour insérer dynamiquement les données de l’application dans les
vues des composants, Angular définit des techniques pour assurer la
liaison des données.
Data Binding = communication.
Data binding: exemple
Data binding: vue html
Ajouster la librerie Bootstrap CSS au projet
Tout d’abord, installer Bootstrap en utilisant la
commande npm;
Ensuite ajouter le chemin de bootstrap.min.css
dans le fichier angular.json (angular-ci.json pour les
version antérieurs)
npm install --save angular@3
Ensuite démarrer le serveur avec ng serve
Nouveau look avec Bootstrap
Les Services
Un service est une catégorie largeur qui englobe toute valeur fonction ou
fonctionnalité dont votre application a besoin;
Un service est généralement une classe avec un but taillé sur mesure bien défini;
Généralement les composants, se limitent à l’affichage et à la gestions des
événements dans la vue du composant. Exécution des traitements en local ou en
back end sont attribués aux services;
Quand un événement survient dans la vue, le composant fait appel à des fonctions
qui se trouvent dans les services pour effectuer les traitements et fournir les
résultats;
Généralement, c’est le service qui interagit avec la partie back end de l’application
en envoyant les requêtes HTTP;
En général, c’est le composant qui consomme les services, toutefois, un services
peut consommer d’autres services;
L’utilisation de services se fait via le principe d’injection de dépendance.
Injection de dépendance
Lorsque Angular crée un composant, il demande d’abord à un injecteur, les
services requis;
L’injecteur maintient une collection d’instance de services qu’il a crée
précédemment;
Et si une instance de service n’est pas dans le conteneur, il la crée et l’ajout au
conteneur avant de l’envoyer au service;
Lorsque tous les services demandés ont été résolus, et retournés alors Angular
peut appeler le constructeur du composant avec les instances crées comme
paramètres;
Il s’agit là d’une injection de dépendance.
Enregistrement des services
Pour utiliser un service, il faut au préalable enregistrer un fournisseur de ce service auprès de
l’injecteur;
Un fournisseur de service est une fabrique qui permet de gérer l’instanciation des services;
Vous pouvez enregistrer des fournisseurs au niveau du module ou du composant;
Il est conseillé d’ajouter ces fournisseurs au niveau du module afin la même instance;
Vs
.
Configuration des routes
app-routing.module.ts app-module.ts
Router outlet
La plupart des applications communiquent avec les services backend via le protocole
HTTP;
HttpClient du module @angular/common/http, offre une API HTTP client simplifiée pour
les applications Angular;
Les forms sont basés uniquement sur des directives de modèle, tandis
que les reactiveForms sont définis programmatiquement au niveau de
la classe du composant;
Les reactiveForms sont un meilleur choix par défaut pour les nouvelles
applications, car ils sont plus puissants et plus faciles à utiliser;
L'approche basée sur les forms est très familière aux développeurs
AngularJs et est idéale pour une migration facile des applications
AngularJs vers Angular;
product.component.ts
Décomposition en sous-composant
Cas pratique
product.state.ts
NgRX: Reactive State Management
NgRx est une librairie implémentant le pattern
Redux en utilisant la programmation réactive basé
sur RxJS;
NgRX permet à une application Angular de
centraliser l’état de l’application dans un unique
objet; NgRX State Management Lifecycle
Tous les composants peuvent accéder facilement
à l’état de l’application d’une manière réactive;
Chaque composant peut faire une souscription
aux données du state dont il a besoin en utilisant
les sectors;
A chaque fois que ces données du state change,
le composant est mis à jour d’une manière
réactive;
Ce mécanisme NgRX propose des éléments
puissants alternatifs aux classiques fournies par
Angular:
@Input et @Output permet de faire communiquer
d’une façon simple les composants à travers l’arbre
de composants
Les services qui peuvent être utilisés pour partager
les données à travers l’application et aussi des
traitements pour l’ensembles des composants
Architecture de NgRX
NgRx est une implémentant le pattern Redux en utilisant RxJS; Effects: est un observateur d’un certain
L’architecture de NgRX repose sur les composants suivants; type d’action particulière qu’il faudrait
Store: Objet Js contenant l’état de votre application. Le intercepter pour faire appel aux services de
store est un objet Js immuable. l’application qui sont utilisées pour interagir
avec le backend. Chaque interaction avec
Web Component: Tout comosant web de l’application
le backend, entraine un évènement
souhaitant utiliser une partie de l’état doit souscrire un
(Succès ou Erreur) qui est traduit par
abonnement dans le Store.
l’Effect dispatchant une autre action
Selector: pour permettre à un composant de souscrire à
destinée à être intercepté par un Reducer
une partie précise du state au lieu de souscrire à tout le en vu de mettre à jour le state du Store;
State
Entities: pour féliciter la gestion de
Action: ce sont des évènement émis par votre application
collections d’entités du State, NgRX fourni
au niveau des composants suites aux interactions IHM ou un mécanisme qui permet d’ajouter,
dans des services suite à des interaction avec le back end. rechercher, mettre à jour et supprimer des
Pour dispatcher une action, on utilise l’objet Store. Une entités du state de l’application en utilisant
action est un objet Js défini par deux attributs: EntityFactory.
Type: String qui représente le type de l’évènement
Payload: un objet Js contenant les paramètres de l’action
Reducer: un reducer est une fonction Js pure représentant des
écouteurs d’évènements (Action) qui reçoit le state actuel et
l’action dispatchée par le Store. En fonction du type de l’action
et de son Payload, le Reducer retourne un nouveau Store,
permettant à l’application de passer d’un état courant à un
nouvel état. Les Reducers doivent préserver l’immuabilité du
Store. Ce qui offre la possibilité de concerver l’historique des
différents changement dans le state de l’application.
Utilisation de NgRX
Pour utiliser NgRx, on a besoin d’un ensemble de dépendances qui constituent les
éléments permettant d’implémenter le pattern Redux. Nous avons entre autre :
Le Store: npm install --save @ngrx/store;
Les Effects: npm install --save @ngrx/effects;
Une outils très important pour la phase de développement : le Store-devtools:
npm install --save @ngrx/sotre-devtools.