3. Miško Hevery
Projet Google Feedback
6 mois de développement
17 000 lignes de codes front-end
Des difficultés à développer et à
réaliser du code testable
4. Miško Hevery
Le défi
Refaire l’équivalent des 6 mois de
travail en 2 semaines
13. Concepts clés
Templating côté client
Pattern MVC*
Databinding
Injection de dépendances
Extension du HTML
14. Pattern MVC* côté client
Vue
HTML
Modèle
Contrôleur
Javascript
Javascript Front-end
Back-end
HTTP
15. Templating côté client
<div>
Bonjour {{unPrenom}}, javascript est ton ami :)
<div ng-include="views/footer.html"></div>
</div>
HTML
16. Databinding
Mise à jour automatique
<div>
Bonjour {{unPrenom}},
</div>
dans les 2 sens
var unPrenom = "Rossi";
HTML Javascript
17. Injection de dépendances
var monModule = angular.module("monModule",["module1",
"module2"]);
function ($scope, $window, monService) {
// Utilisation de composant sans les instancier
}
18. Extension HTML
<div>
<ma-balise></ma-balise>
<div mon-attribut="super"></div>
<div class="maClasseSpeciale"></div>
<!-- monCommentaireSpecial -->
</div>
HTML
19. Composants clés
Filter
Controller
Directive
Module
Service
Template
HTML
Javascript
Javascript
Javascript
Javascript
Javascript
|
$scope
HTML
Module
Module
20. Module
var monModule = angular.module("monModule", ["ngRoute",
"unAutreModule"]);
Javascript
21. Service*
monModule.factory("monService", function() {
return {
rechercher : function() {…},
enregistrer : function() {…}
}
}
function(monService) {
monService.rechercher();
}
Javascript
Javascript
* Il existe d’autres façons de créer des services
28. Directives & Validateurs HTML
Validateur Format Exemple (ngRepeat)
Aucun namespace-name ng-repeat=item in items
XML namespace:name ng:repeat=item in items
HTML5 data-namespace-name data-ng-repeat=item in items
xHTML x-namespace-name x-ng-repeat=item in items
29. AngularJS c’est aussi…
Des utilitaires Des modules
angular.copy
angular.equals
angular.forEach
angular.isArray
angular.isDate
angular.element
…
ngAnimate
ngCookies
ngMock
ngResource
ngRoute
ngSanitize
ngTouch
…
AngularUI
UI-Bootstrap
UI-Router
NG-Grid
UI-Alias
Calendar
Google Maps
…
Des tests
Unitaire
Intégration