Comment créer une application Angular performante ?

Sébastien Ollivier
Sébastien OllivierTechLead Web Apps at Infinite Square
Comment créer une application
Angular performante ?
Mais qui sommes nous ?
Sébastien OLLIVIER
Développeur @SportyTech
Microsoft MVP
Auteur AngularJS & Angular
SebastienOll sebastieno
William Klein
Développeur @SportyTech
Microsoft MVP
Auteur Angular
wi_klein willovent
https://sebastienollivier.fr/blog
https://blog.williamklein.info
Compilation des templates
Téléchargement
des fichiers JS
browser
Bootstrap
d’Angular
browser
Compilation JiT : Pendant l’exécution de l’application
Compilation des
templates
browser
Affichage du
rendu
browser
Compilation de
l’app
build server
Ajout des
templates dans
le bundle
build server
ng build ou ng build --prod --no-aot
Les templates sont intégrés au bundle lors de la phase de build
Les templates sont compilés lors de l’exécution de l’application
Téléchargement
des fichiers JS
browser
Bootstrap
d’Angular
browser
Compilation AoT : Pendant la phase de build
Compilation des
templates
build server
Affichage du
rendu
browser
Compilation de
l’app
build server
ng build --aot ou ng build --prod
Les templates sont compilés lors de la phase de build
Compilation JiT vs AoT
https://sebastienollivier.fr/blog/angular/angular-jit-vs-aot
AoT en production
JiT en développement
En AoT, le bundle est plus petit, l’application est plus performante et les
templates sont validés (+ code treeshaké) à la compilation
En JiT, le temps de build de l’application est beaucoup plus rapide
Feature Modules
Feature Modules
Regrouper les fonctionnalités business / technique au sein d’un même
module Angular pour
Mieux organiser son application
Déferrer le chargement d’un module
Change Detection
Comment détecter les changements ?
Angular effectue un cycle de détection de changement à chaque action asynchrone
(évènements du DOM, timers, XHR, etc.)
https://www.youtube.com/watch?v=3IqtmUscE_U
https://www.youtube.com/watch?v=8aGhZQkoFbQ
car JavaScript est un langage monothreadé et asynchrone non bloquant
ZoneJS / NgZone
Stratégie Default
Angular parcourt tous les composants de manière arborescente pour détecter les changements
Pas de modification
détectée
https://github.com/Willovent/changedetection-advent-calendar
La méthode MarkForCheck du ChangeDetectorRef permet d’indiquer à Angular de vérifier
une branche même si les références des @Input d’un composant n’ont pas changé.
Stratégie OnPush
Angular ne met à jour que les composants dont les références des @Input ont changé.
Si les références des @Input d’un composant n’ont pas changé, Angular ne va pas vérifier ses
composants enfants.
Server Side Rendering
http://
Envoi du fichier
index.html
server
Téléchargement
des fichiers JS
browser
Bootstrap
d’Angular
browser
Affichage du
rendu
browser
L’utilisateur ne peut rien faire
Comment se charge une application Angular ?
Rendu côté serveur
Le serveur exécute l’application et renvoi une vue prête à l’emploi
+
Comment se charge une application Angular avec SSR ?
http://
Envoi du fichier
index.html
server
Téléchargement
des fichiers JS /
affichage du rendu
browser
Bootstrap
d’Angular
browser
Mise à jour du
rendu
browser
L’utilisateur voit la page L’utilisateur peut interagir
https://blog.williamklein.info/posts/Angular/Rendu-cote-serveur-dAngular-Part-13
Preboot.js enregistre les interactions et les rejoue une fois l’application prête
Et si l’utilisateur fait des trucs pendant le chargement ?
L’utilisateur voit la page L’utilisateur peut interagir
L’application n’est pas prête et ne peut réagir aux interactions utilisateurs
Merci ! Des Questions ?
1 of 18

Recommended

Java - Lombok by
Java - LombokJava - Lombok
Java - LombokKokou Gaglo
405 views10 slides
Présentation Angular 2 by
Présentation Angular 2 Présentation Angular 2
Présentation Angular 2 Cynapsys It Hotspot
2.1K views11 slides
Intégration continue et déploiement continue avec Jenkins by
Intégration continue et déploiement continue avec JenkinsIntégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsKokou Gaglo
1.3K views16 slides
Introduction à Angular 2 by
Introduction à Angular 2Introduction à Angular 2
Introduction à Angular 2Laurent Duveau
3.5K views40 slides
Angular 2 by
Angular 2Angular 2
Angular 2Zoubir REMILA
327 views32 slides
J'ai fait une app native en React Native by
J'ai fait une app native en React NativeJ'ai fait une app native en React Native
J'ai fait une app native en React NativeCocoaHeads France
5.5K views33 slides

More Related Content

What's hot

Intro aurelia js-typescript by
Intro aurelia js-typescriptIntro aurelia js-typescript
Intro aurelia js-typescriptPhilippe Beroucrry
108 views20 slides
Fastlane snapshot presentation by
Fastlane snapshot presentationFastlane snapshot presentation
Fastlane snapshot presentationCocoaHeads France
4K views26 slides
ngconf 2016 (french) by
ngconf 2016 (french)ngconf 2016 (french)
ngconf 2016 (french)Laurent Duveau
570 views23 slides
Angular2 / Typescript symposium Versusmind by
Angular2 / Typescript symposium VersusmindAngular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium VersusmindPhilippe Didiergeorges
1.7K views32 slides
Symposium n°7 : Plateforme Meteor by
Symposium n°7 : Plateforme MeteorSymposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme MeteorArthurMaroulier
1.5K views66 slides
ngParis - Rendu cote serveur by
ngParis - Rendu cote serveurngParis - Rendu cote serveur
ngParis - Rendu cote serveurSébastien Ollivier
406 views16 slides

What's hot(20)

Symposium n°7 : Plateforme Meteor by ArthurMaroulier
Symposium n°7 : Plateforme MeteorSymposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme Meteor
ArthurMaroulier1.5K views
Café Numérique Arlon S03#02: Je code mon blog (EU code week Arlon) by Café Numérique Arlon
Café Numérique Arlon S03#02: Je code mon blog (EU code week Arlon)Café Numérique Arlon S03#02: Je code mon blog (EU code week Arlon)
Café Numérique Arlon S03#02: Je code mon blog (EU code week Arlon)
Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2 by Romain Linsolas
Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2
Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2
Romain Linsolas7K views
Comparatif des frameworks js mv by Mael Monnier
Comparatif des frameworks js mvComparatif des frameworks js mv
Comparatif des frameworks js mv
Mael Monnier3.2K views
Rapport app mobile ionic3 my gallery by MOHAMMED MOURADI
Rapport app mobile ionic3 my galleryRapport app mobile ionic3 my gallery
Rapport app mobile ionic3 my gallery
MOHAMMED MOURADI657 views
Android Lab Test : Le style des vues (français) by Bruno Delb
Android Lab Test : Le style des vues (français)Android Lab Test : Le style des vues (français)
Android Lab Test : Le style des vues (français)
Bruno Delb267 views
Angular Framework présentation PPT LIGHT by tayebbousfiha1
Angular Framework présentation PPT LIGHTAngular Framework présentation PPT LIGHT
Angular Framework présentation PPT LIGHT
tayebbousfiha11.3K views
Etude rapide sur les frameworks Front-end (AngularJS vs *JS) by Bilel ZEGHAD
Etude rapide sur les frameworks Front-end (AngularJS vs *JS)Etude rapide sur les frameworks Front-end (AngularJS vs *JS)
Etude rapide sur les frameworks Front-end (AngularJS vs *JS)
Bilel ZEGHAD449 views
Non-regression testing in web app development by Cédric Villa
Non-regression testing in web app developmentNon-regression testing in web app development
Non-regression testing in web app development
Cédric Villa476 views
Présentation DevoxxFR 2015 sur GWT by DNG Consulting
Présentation DevoxxFR 2015 sur GWTPrésentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWT
DNG Consulting6.7K views
SPA avec Angular et SignalR (FR) by Rui Carvalho
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)
Rui Carvalho1.6K views

Similar to Comment créer une application Angular performante ?

Angular 11 by
Angular 11Angular 11
Angular 11PapaDjadjigueye
150 views31 slides
Technologies sur angular.pptx by
Technologies sur angular.pptxTechnologies sur angular.pptx
Technologies sur angular.pptxIdrissaDembl
121 views31 slides
Chapitre 1-Composants et Modules.pdf by
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfBoubakerMedanas
17 views14 slides
Chapitre 1-Composants et Modules.pdf by
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfBoubakerMedanas
13 views14 slides
Introduction à Angular by
Introduction à AngularIntroduction à Angular
Introduction à AngularJean-Baptiste Vigneron
3.2K views15 slides
Cours 2 les composants by
Cours 2 les composantsCours 2 les composants
Cours 2 les composantsAymen Sellaouti
896 views42 slides

Similar to Comment créer une application Angular performante ?(20)

Technologies sur angular.pptx by IdrissaDembl
Technologies sur angular.pptxTechnologies sur angular.pptx
Technologies sur angular.pptx
IdrissaDembl121 views
Chapitre 1-Composants et Modules.pdf by BoubakerMedanas
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdf
BoubakerMedanas17 views
Chapitre 1-Composants et Modules.pdf by BoubakerMedanas
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdf
BoubakerMedanas13 views
Symfony with angular.pptx by Esokia
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptx
Esokia3.1K views
Alphorm.com Formation Angular - Les fondamentaux by Alphorm
Alphorm.com Formation Angular - Les fondamentauxAlphorm.com Formation Angular - Les fondamentaux
Alphorm.com Formation Angular - Les fondamentaux
Alphorm43.8K views
Ionic, AngularJS,Cordova,NodeJS,Sass by marwa baich
Ionic, AngularJS,Cordova,NodeJS,SassIonic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,Sass
marwa baich3.6K views
Angluars js by RYMAA
Angluars jsAngluars js
Angluars js
RYMAA429 views
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours by Horacio Gonzalez
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
Horacio Gonzalez754 views
Asp.net Tutorials de L'application "Organizer" by Nazih Heni
Asp.net Tutorials de L'application "Organizer"Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"
Nazih Heni7.6K views
Angular JS - Paterne Gaye-Guingnido by SOAT
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido
SOAT2K views
Spring Meetup Paris - Back to the basics of Spring (Boot) by Eric SIBER
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)
Eric SIBER4.3K views
GtugDakar AppEngine, Gwt by hkairi
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
hkairi2.1K views

Comment créer une application Angular performante ?

  • 1. Comment créer une application Angular performante ?
  • 2. Mais qui sommes nous ? Sébastien OLLIVIER Développeur @SportyTech Microsoft MVP Auteur AngularJS & Angular SebastienOll sebastieno William Klein Développeur @SportyTech Microsoft MVP Auteur Angular wi_klein willovent https://sebastienollivier.fr/blog https://blog.williamklein.info
  • 4. Téléchargement des fichiers JS browser Bootstrap d’Angular browser Compilation JiT : Pendant l’exécution de l’application Compilation des templates browser Affichage du rendu browser Compilation de l’app build server Ajout des templates dans le bundle build server ng build ou ng build --prod --no-aot Les templates sont intégrés au bundle lors de la phase de build Les templates sont compilés lors de l’exécution de l’application
  • 5. Téléchargement des fichiers JS browser Bootstrap d’Angular browser Compilation AoT : Pendant la phase de build Compilation des templates build server Affichage du rendu browser Compilation de l’app build server ng build --aot ou ng build --prod Les templates sont compilés lors de la phase de build
  • 6. Compilation JiT vs AoT https://sebastienollivier.fr/blog/angular/angular-jit-vs-aot AoT en production JiT en développement En AoT, le bundle est plus petit, l’application est plus performante et les templates sont validés (+ code treeshaké) à la compilation En JiT, le temps de build de l’application est beaucoup plus rapide
  • 8. Feature Modules Regrouper les fonctionnalités business / technique au sein d’un même module Angular pour Mieux organiser son application Déferrer le chargement d’un module
  • 10. Comment détecter les changements ? Angular effectue un cycle de détection de changement à chaque action asynchrone (évènements du DOM, timers, XHR, etc.) https://www.youtube.com/watch?v=3IqtmUscE_U https://www.youtube.com/watch?v=8aGhZQkoFbQ car JavaScript est un langage monothreadé et asynchrone non bloquant ZoneJS / NgZone
  • 11. Stratégie Default Angular parcourt tous les composants de manière arborescente pour détecter les changements
  • 12. Pas de modification détectée https://github.com/Willovent/changedetection-advent-calendar La méthode MarkForCheck du ChangeDetectorRef permet d’indiquer à Angular de vérifier une branche même si les références des @Input d’un composant n’ont pas changé. Stratégie OnPush Angular ne met à jour que les composants dont les références des @Input ont changé. Si les références des @Input d’un composant n’ont pas changé, Angular ne va pas vérifier ses composants enfants.
  • 14. http:// Envoi du fichier index.html server Téléchargement des fichiers JS browser Bootstrap d’Angular browser Affichage du rendu browser L’utilisateur ne peut rien faire Comment se charge une application Angular ?
  • 15. Rendu côté serveur Le serveur exécute l’application et renvoi une vue prête à l’emploi +
  • 16. Comment se charge une application Angular avec SSR ? http:// Envoi du fichier index.html server Téléchargement des fichiers JS / affichage du rendu browser Bootstrap d’Angular browser Mise à jour du rendu browser L’utilisateur voit la page L’utilisateur peut interagir https://blog.williamklein.info/posts/Angular/Rendu-cote-serveur-dAngular-Part-13
  • 17. Preboot.js enregistre les interactions et les rejoue une fois l’application prête Et si l’utilisateur fait des trucs pendant le chargement ? L’utilisateur voit la page L’utilisateur peut interagir L’application n’est pas prête et ne peut réagir aux interactions utilisateurs
  • 18. Merci ! Des Questions ?

Editor's Notes

  1. Titre : Créer une application performante Image: fast
  2. Présentation seb & will
  3. https://willovent.github.io/changedetection-advent-calendar/