Formation Angular 4 Avancé Une formation Frédéric GAURAT
Une formation Cursus Angular 4
Une formation Cursus Angular 4
Une formation Public concerné Développeurs et Architectes web
Une formation Connaissances requises
A vous de jouer !
Présentation du projet de la formation Une formation Frédéric GAURAT
Une formation Plan Le projet Todo List Le serveur et la base de données : Docker Présentation des outils
Une formation Le projet Todo List
Une formation Le serveur et la BDD : Docker
Une formation
Merci
Rappel sur le fonctionnement de Javascript Une formation Frédéric GAURAT
Une formation Introduction 1. Comprendre le fonctionnement d’Angular 2. Les Reactive Forms 3. L’injection de dépendance et le développement de services 4. Les Pipes 5. Routing avancé 6. Le projet Conclusion Plan
Une formation Le fonctionnement de JS JavaScript est un langage : Single Threaded Asynchrone Il s’appuie sur des callbacks
Une formation Les implémentations Google’s V8 Apple Safari Carakan Chakra SpiderMonkey, JägerMonkey, IonMonkey }
Une formation Call Stack Stack main() printHello() sayHello()
Une formation
Une formation Callback Queue Stack main() console.log(…) setTimeout(…)
Une formation Event Loop et Asynchrone
Une formation
Merci
Les Zones Une formation Frédéric GAURAT
Une formation Public concerné Développeurs et Architectes web
Une formation Qu’est que zone.js? Bibliothèque développée par l’équipe Angular (inspirée par Dart) Utilisable hors d’Angular Une zone est un contexte d’exécution Une zone englobe l’exécution de code asynchrone
Une formation Pourquoi utiliser zone.js Garder des données entre différents appels asynchrones Les frameworks peuvent l’utiliser pour détecter et intercepter des exécutions asynchrones Facilite le debug, les tests et le profiling
Une formation Fonctionnement de zone.js zone.js « monkey patches » toutes les fonctions asynchrones du navigateur (setTimeout(),…) « monkey patches » est un moyen de modifier un programme directement en mémoire
Une formation Calcul du temps d’exécution d’une fonction Calcul du temps d’exécution d’une fonction asynchrone
Une formation Zone.js dans Angular Angular s’appuie sur NgZone NgZone est une implémentation de zone.js NgZone ajoute une API basée sur des Observables
Merci
Principe de détection et de notification des changements Une formation Frédéric GAURAT
Une formation Connaissances requises
Une formation La détection de changement MODEL DOM Détection de Changement !
Une formation Comment modifier le bon élément DOM en fonction de la modification du model ? Comment le faire efficacement (manipulation d’arbre) La détection de changement
Une formation La cause du changement Events : click… Ajax : récupération de data auprès du serveur Timers : setTimeout(), setInterval() Tous sont asynchrones !
Une formation Notifier un changement Les zones ! (Et plus particulièrement ngZone) La classe ApplicationRef surveille ngZone et déclenche un tick pour effectuer le changement
Une formation Appliquer le changement Chaque component a son propre détecteur de changement qui applique les modifications Organisés en arbre, datas top to bottom : ce n’est pas un cycle
Une formation
Merci
A vous de jouer !
Une formation Plan Performance Immutables et Observables Améliorer la détection de changement
Une formation Performance Angular doit vérifier chaque composant lorsque le modèle change Indiquer à Angular d’exécuter les détecteurs de changement pour les parties qui ont changé : utiliser les objets immutables et les observables
Une formation Immutables et Observables Immutables : ne peuvent pas changer Nouvelle référence de cette objet : clone Observables : notifient par un évènement la modification d’un objet
Une formation Améliorer la détection de changement Stratégie de détection de changement OnPush : l’objet utilisé dans le component est en entrée uniquement et doit être considéré comme immutable Si c’est un observable, nous pouvons indiquer à Angular une modification
Une formation
Merci
Présentation du projet de la formation Une formation Frédéric GAURAT
Une formation Plan Les Reactive forms Reactive forms vs Template Driven forms Démonstration
Une formation Les Reactive forms Arbre d’éléments de formulaire créé directement dans le composant Eléments de l’arbre liés (bind) aux composants du formulaire contenu dans le template Formulaire manipulé entièrement par le composant, valeurs toujours synchronisées
Une formation Comparaison Reactive forms Synchrones Le développeur code l’ensemble des éléments du formulaire Template Driven forms Asynchrones La création est laissée aux directives
Une formation
Merci
Le FormBuilder Une formation Frédéric GAURAT
Une formation Plan Le projet Todo List Le serveur et la base de données : Docker Présentation des outils
Une formation Le FormBuilder Facilite la création de formulaire C’est un service : • Qu’il faut injecter dans le constructeur • Qui permet la création de FormGroup Le FormGroup permet de stocker les éléments du formulaire sous la forme d’un objet : name=>definition
Une formation
Une formation La validation La classe Validators définit les contraintes de base Appliquer une règle de validation : Compléter la déclaration d’un FormControl Dans un FormGroup
Une formation
Une formation Types d’éléments de formulaire Le Formbuilder autorise le binding sur la totalité des éléments de formulaire HTML
Une formation
Une formation Le projet Todo List
Une formation
Merci
L’injection de dépendance Une formation Frédéric GAURAT
Une formation Plan Qu’est ce que l’injection de dépendance? Injection de dépendance dans Angular Les services
Une formation L’injection de dépendance ? Principe basé sur l’inversion de contrôle Permet le développement d’application modulaire Facilite les tests
Une formation Injection de dépendance Angular a son propre mécanisme d’injection : l’injector Créé au boot de l’application Utilisable dans la totalité de l’application Configurer en enregistrant des providers Les providers créent les services
Une formation Les services L’implémentation d’un service est l’application du pattern Separation of concerns (séparation des préoccupations) Un service contient de la logique métier et sera injecté dans des composants de l’application Un service est un singleton
Une formation Les services Un service est une simple classe marquée par le décorateur @Injectable() Le décorateur @Injectable indique que la classe est disponible pour être injectée
Une formation Le serveur et la BDD : Docker
Développement d’un service Une formation Frédéric GAURAT
Une formation Plan Le service Logger Configuration de l’injector Utilisation du service
Une formation Le service Logger Objectif : créer un Logger • Il affichera les messages dans la console • Il stockera les messages dans un tableau
Une formation
Une formation Configuration de l’injector Il peut être configuré dans 2 endroits : 1. Le module : le service est visible dans tous les composants du module 2. Le composant : le service n’est utilisable que dans ce composant
Une formation
Une formation Utilisation du service Injection du service
Une formation
Une formation
Notion de pipes Une formation Frédéric GAURAT
Une formation Plan Qu’est ce qu’un pipe ? Utilisation d’un pipe
Une formation Qu’est ce qu’un pipe ? Le pipe est le nouveau nom donné au filter d’AngularJS Il permet de transformer une donnée à afficher data pipe Data transformée
Une formation Utilisation d’un pipe Le pipe s’utilise de la même façon que dans AngularJS En utilisant le caractère ‘|’ Suivi du filtre à utiliser et éventuellement des paramètres
Une formation
Merci
Merci
Une formation Plan Les pipes d’Angular UpperCasePipe et LowerCasePipe DatePipe CurrencyPipe PercentPipe
Une formation UpperCasePipe et LowerCasePipe Transforme du texte en majuscule ou minuscule {{"hello" | uppercase}} {{ "HELLO" | lowercase}}
Une formation
Une formation DatePipe Transforme une expression de date Date object Timestamp Chaine au format ISO En une chaîne au bon format (suivant la locale) {{1498119767000|date:'medium'}}
Rappel sur le fonctionnement de Javascript Une formation Frédéric GAURAT
Une formation CurrencyPipe Formate un nombre en devise monétaire {{1.234|currency:’USD’:true}}
Une formation
Une formation PercentPipe Formate un nombre en pourcentage (en fonction de la locale) {{1.234|percent}}
Une formation
Merci
Développement d’un pipe personnalisé Une formation Frédéric GAURAT
Une formation Plan Le fonctionnement de JavaScript Les implémentations Call Stack, Callback Queue et Event Loop
Une formation Le décorateur @Pipe Le décorateur @Pipe est ajouté à la classe du pipe Il prend 2 paramètres optionnels : • name : (string) le nom du pipe • pure : (boolean) état interne
Une formation L’interface PipeTransform L’interface PipeTransform contient une seule méthode transform(value: any, ...args: any[]): any value : la valeur en entrée de filtre spread operator args : les paramètres éventuels
Une formation
Merci
Les Child Routes et les routes secondaires Une formation Frédéric GAURAT
Une formation Plan Organiser ses modules Configuration Chemins relatifs
Une formation Le fonctionnement de JS JavaScript est un langage : Single Threaded Asynchrone Il s’appuie sur des callbacks
Une formation Configuration Les routes sont configurées dans un tableau d’objets de type Routes Ces objets ont une propriété children : un tableau de type Routes
Une formation
Une formation Chemins relatifs Configuration par défaut basée sur l’adressage absolue : à partir de la racine (‘/’) Si le chemin du composant parent change, il faut changer la totalité des chemins Pour résoudre ce problème on va définir des chemins relatifs à l’URL courante
Une formation
Une formation Les routes secondaires Dans le template d’un component, il est possible d’utiliser plusieurs <router-outlet></router-outlet> Ils se distinguent par un attribut name : <router-outlet name=‘contact’></router- outlet> Ils sont la cible des routes secondaires
Une formation
Une formation Les implémentations Google’s V8 Apple Safari Carakan Chakra SpiderMonkey, JägerMonkey, IonMonkey }
Route ‘guards’ Une formation Frédéric GAURAT
Une formation Plan Surveillance des routes Les ‘guards’
Une formation Surveillance des routes Vérifier l’accès à une route Autorisation d’accès Login nécessaire Récupération de data avant la navigation Sauvegarde et validation par l’utilisateur
Une formation Les ‘guards’ CanActivate : gère la navigation vers une route CanActivateChild : gère la navigation vers une route enfant Resolve : permet la récupération de donnée avant l’activation de la route CanLoad : gère la navigation vers un module chargé de façon asynchrone
Une formation
Merci
Routing asynchrone Une formation Frédéric GAURAT
Une formation Plan Le routing asynchrone Exemple
Une formation Le routing asynchrone Une application volumineuse doit être chargée dans le navigateur pour fonctionner Pour éviter un chargement long, il est possible de demander certains modules « au bon moment » (lazy loading)
Une formation
Une formation Call Stack Stack main() printHello() sayHello()
Projet TodoList Avancé Une formation Frédéric GAURAT
Une formation Plan Le projet Todo List Deployd et Docker
Une formation Deployd
Une formation Docker
Une formation
Merci
Conclusion Une formation Frédéric GAURAT
Une formation Bilan Le fonctionnement d’Angular Les reactive forms Les services Les pipes Les routes (avancé)
Merci

Alphorm.com Formation Angular : Avancé