AngularJS, Retro ?
Deyine Jiddou
Lead software engineer at @Neticoa
deyine.jiddou@gmail.com
@Deyine
Flashback...
Old web frameworks
➢ Pattern MVC et variantes MVC2 / MVVM / MVP …
➢ Routes, données et templates gérés côté serveur
➢ View Template Engine
Old web frameworks
Problème
➢ Html généré à chaque requête Http
➢ Cache html uniquement côté serveur
➢ + 80% de contenu statique dans chaque réponse
Problème
DemoJS
Angular, la réponse ?
En 4 mots clés
➢ Framework Javascript
➢ Single Page Application
➢ MVW (Whatever)
➢ Google
Modules
90 secondes
Un module est composé de
➢routes
➢controllers / scope
➢services, factories, providers
➢directives
Modules
80 secondes
➢Démarrage d’Angular
➢ Création du module principal
Routes
70 secondes
➢Chaque route est gerée par un controller
Controller
60 secondes
➢ Le controller expose les données via le scope.
Scope
50 secondes
➢Objet liant le controller à la vue (Wikipedia)
➢Contient les données model exposées à la vue
➢Notion de Two way Binding
Services
40 secondes
➢ Les services permettent d’effectuer des traitements sur les
données.
Directives
30 secondes
➢Permettent d’enrichir HTML
➢Possibilité de créer de nouvelles balises / attributs
etc.
➢Un avant goût des Web Components
Directives
20 secondes
Tools
10 secondes
➢Build tools
➢Test tools
➢UX https://github.com/codylindley/frontend-tools
DemoJS
Benchmark
Rails App
ab -n 1000 -c 10 http://localhost:3000/presentations
Rails backend app
ab -n 1000 -c 10 http://localhost:3000/api/slides
Avantages
➢ Backend allégé (~ 5x Faster)
➢ Faible couplage : Même Backend pour tous les clients
➢ Coder en parallèle : Frontend et Backend
➢ Webapp statique
➢ Extensibilité via les directives
Avantages
Inconvenients
➢ Plus de 1000 watchers sur une page, peut degrader l’UI (angular-
tips.com)
Watcher ????
Inconvenients
➢$Watcher sur chaque model pour surveiller les
changements,
➢$Digest à chaque changement,
Inconvenients
➢ $Digest est le cycle dans lequel les watchers sont evalués,
➢ Le cycle $Digest est lancé par un appel de $scope.$apply()
➢ $scope.$apply() est lancé par les directives natives ou evenements
(ng-click , ngModel etc)
https://github.com/angular/angular.js/blob/d077966ff1ac18262f4615ff1a533db24d4432a7/src/ng/directive/ngEventDirs.js
➢ Ok, mais jusqu’à quand ? 2 fois au min / 10 au max
Inconvenients
Extrait du code source de angularjs
Scope
Inconvenients
DemoJS
Future, Angular 2
Bonne nouvelle
➢ Les lacunes de Angular 1.X ont été
adressées/corrigées dans Angular 2
Mauvaise nouvelle
➢ Angular 2 est une réecriture. Aucune
retrocompatibilité n’est prévue
Merci pour votre attention
QuestionJS ?
Links
- https://farm9.staticflickr.com/8529/8588701778_91aeb65377_o.png
- http://www.allenpike.com/2015/javascript-framework-fatigue/
- angular-tips.com
- https://github.com/djsmith42

Angular retro