Angular JS - Paterne Gaye-Guingnido

1 566 vues

Publié le

Javascript s’est depuis longtemps imposé comme le principal langage pour développer des écrans web dynamiques. L'émergence des SPA (Single Page Application) est en fait l'aboutissement logique du succès de ces outils au premier rang desquels on compte jQuery et AJAX.

AngularJS fait partie d’une nouvelle génération de frameworks qui propose d’aller plus loin afin d’avoir non seulement des SPA améliorant l’expérience utilisateur mais aussi un code mieux organisé, plus modulaire et donc facilement testable.

Au cours de cette soirée, vous verrez d’abord la manière dont AngularJS étend le HTML à travers les directives puis le binding bidirectionnel, ensuite, la programmation asynchrone avec AngularJS. Enfin pour finir, nous allons voir ces petits plus qui expliquent la popularité du framework : les filtres, l’injection de dépendance et les tests.

0 commentaire
4 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 566
Sur SlideShare
0
Issues des intégrations
0
Intégrations
14
Actions
Partages
0
Téléchargements
133
Commentaires
0
J’aime
4
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Angular JS - Paterne Gaye-Guingnido

  1. 1. Introduction à Paterne Gaye @ptngaye 2014-09-30 Introduction à AngularJS
  2. 2. AngularJS : un framework web ⦿Un framework web ⦿ Templating + Routage ⦿ Dialogue avec les services du back-end ⦿ MCV / MVVM ⦿ Un framework web Javascript & front-end ⦿ AngularJS s’exécute dans le navigateur ⦿ Controlleurs + Model en Javascript ⦿Développement de SPA 2014-09-30 Introduction à AngularJS
  3. 3. Planning de la soirée ⦿Une première application AngularJS ⦿ Extension du langage HTML : les directives ⦿ Vues, scopes et data-binding ⦿ Structure du code avec AngularJS ⦿Appels asynchrones au back-end ⦿ Injection de dépendances et tests ⦿ Points à surveiller 2014-09-30 Introduction à AngularJS
  4. 4. Préambule ⦿ Framework 100% Javascript vs Frameworks PHP/Java/Flash/SilverLight.. ⦿ Un langage déjà présent dans “tous” les navigateurs ● => Pas de plugin ⦿ Avec les frameworks “server side”, JSF, Struts etc., on fini toujours par rajouter du code Javascript ● =>Code fragmenté en plusieurs langages ⦿Navigateurs plus puissants que jamais ● =>Décharger le serveur en exploitant la puissance du client 2014-07-10 Introduction à AngularJS
  5. 5. Une première application AngularJS 2014-07-10 Introduction à AngularJS
  6. 6. Une application AngularJS 2014-07-10 Introduction à AngularJS
  7. 7. Une application AngularJS 2014-07-10 Introduction à AngularJS
  8. 8. Extension du langage HTML 2014-07-10 Introduction à AngularJS
  9. 9. Qu’est-ce qu’une directive ? ⦿Une directive = Flag placé dans la vue ⦿Une directive = Elément | Attribut | commentaire HTML | Classe CSS ⦿Les navigateurs ne reconnaissent pas ces flags : c’est à AngularJS de les traiter ⦿Une directive => un script JS indiquant le traitement que AngularJS doit effectuer 2014-07-10 Introduction à AngularJS
  10. 10. Le compilateur HTML 2014-07-10 Introduction à AngularJS
  11. 11. Exemple de directive ⦿ Use case : ⦿ Un bouton de commande qui demande une confirmation ⦿ La vue <soat-confirmation-button action=”doVeryDangerousAction” message=”Opération est irréversible. Continuer ?” /> ⦿ Le traitement associé ⦿ le script soat-confirmation-button.js 2014-07-10 Introduction à AngularJS
  12. 12. Exemple de directive 2014-07-10 Introduction à AngularJS
  13. 13. Directives : quand les utilser ? ⦿Comment savoir qu’on a besoin d’une directive ? ⦿Envie irrésistible de parsing du DOM ⦿Un bloc de HTML qui se répète ⦿Composant de formulaire : calendrier, zone de saisie ... ⦿ Attention à vérifier d’abord les directives natives de Angular ou de la communauté 2014-07-10 Introduction à AngularJS
  14. 14. Vues, scopes et data-binding 2014-07-10 Introduction à AngularJS
  15. 15. Scope ⦿ Scope = contexte d’évaluation des expressions AngularJS ⦿ un scope = un objet Javascript ⦿ Hiérachie de scope : ⦿ $rootScope le scope de 1er niveau rattaché à ng-app ⦿ Scope propres à ng-controller 2014-07-10 Introduction à AngularJS
  16. 16. La fonction $watch du scope 2014-07-10 Introduction à AngularJS
  17. 17. Contenu d’une vue AngularJS ⦿ Le code HTML classique ⦿ Les directives ⦿ Les expressions AngularJS ⦿ Instruction qui va etre interprété par AngularJS ⦿ A l’intérieur des doubles accolades {{}} ⦿ comme valeurs des directives ⦿ Les filtres ⦿ Fonction qui transforme un objet en un autre 2014-07-10 Introduction à AngularJS
  18. 18. Binding 2014-07-10 Introduction à AngularJS
  19. 19. Structure d’une application AngularJS 2014-07-10 Introduction à AngularJS
  20. 20. Directives vs Controllers vs Services ⦿ Directives ⦿ Manipulation de DOM ⦿ Composants IHM re-utilisables ⦿ Les services ⦿ Dialogue avec le back-end/appels HTTP ⦿ Code métier ⦿ Traitement partagés par plusieurs contrôleurs ⦿ Services natifs préfixés ‘$’ 2014-07-10 Introduction à AngularJS
  21. 21. Directives vs Controllers vs Services ⦿ Controlleurs ⦿ Gestion du scope attaché à une vue ⦿ Gestion des actions utilisateurs ⦿ Les filtres ⦿ Conversion d’un objet en un autre ⦿Exemple : le filtre currency 2014-07-10 Introduction à AngularJS
  22. 22. La définition des routes 2014-07-10 Introduction à AngularJS
  23. 23. Appels asynchrones au back-end 2014-07-10 Introduction à AngularJS
  24. 24. Exemples de use cases ⦿ Cas #1 : agrégateur de news ⦿Interroger Twitter, Google+ et Facebook ⦿Fusionner les trois flux afin d’avoir un flux unique ⦿ Cas #2 : afficher le détail d’un client ⦿Récupérer les infos usuelles dans SAP via un WS ⦿Récupérer des infos additionnels d’une seconde BD via un WS 2014-07-10 Introduction à AngularJS
  25. 25. Notion de callback ⦿ Callback = fonction ⦿Etant donnée une fonction F, on peut rajouter à F un argument supplémentaire qui est une fonction a exécuter en fin de traitement. ⦿ Cas d’un enchaînement d’appels asynchrones: code illisible / enfer des callback ⦿ Solution au callback-hell : les promesses ⦿Une promesse = Résultat d’un traitement asynchrone 2014-07-10 Introduction à AngularJS
  26. 26. Les promesses avec AngularJS 2014-07-10 Introduction à AngularJS
  27. 27. Injection de dépendances et tests 2014-07-10 Introduction à AngularJS
  28. 28. Injection des dépendances 2014-07-10 Introduction à AngularJS
  29. 29. Tests ⦿ Tests unitaires ⦿Injection de dépendances ● On peut mocker facilement les différentes parties de l’application ● On peut donc tester unitairement 2014-07-10 Introduction à AngularJS
  30. 30. Tests : les outils ⦿ Les tests s’exécutent sur la machine de dev ⦿Outil pour exécuter le code Javascript coté serveur ● => NodeJs ⦿Outil JUnit-like pour écrire les tests ● => Mocha, Jasmine, QUnit ⦿Runner pour exécuter les tests ● => +1 Karma ⦿Les tests end-2end ⦿Manipuler le browser via webdriver ● => Protractor ⦿Alternatives à Selenium/Protractor ● => Casper par exemple 2014-07-10 Introduction à AngularJS
  31. 31. Points à surveiller 2014-09-30 Introduction à AngularJS
  32. 32. Attention !!! ⦿ Limites du binding : mémoire (2000 binding ?) ⦿ Pérénité du projet : Google ⦿ Javascript indispensable ⦿ Non respect des bonnes pratiques ⦿Un unique controller pour toute l’application ⦿Code dupliqué dans les différents controllers ⦿Manipulation directe du DOM en dehors des directives ⦿Code complexe dans les expressions et non dans le controller 2014-09-30 Introduction à AngularJS
  33. 33. Outils et documentation 2014-07-10 Introduction à AngularJS
  34. 34. Outils ⦿IDE desktop ⦿IDE supportant Javascript ⦿+1 pour WebStorm (44 € par an) ⦿Les navigateurs ⦿Mode developpeur ⦿ Cas du navigateur : Plugin Batarang ⦿Apparemment très utile 2014-09-30 Introduction à AngularJS
  35. 35. Documentation ⦿Doc en ligne ⦿https://angularjs.org/ ⦿http://goo.gl/EPvajM le groupe Google+ francophone ⦿http://www.frangular.com/ ⦿Livres ⦿“Devenez un ninja avec AngularJS” de Ninja Squad ⦿+1 AngularJS de Brad Green et Shyam Seshadri 2014-09-30 Introduction à AngularJS
  36. 36. 2014-09-30 Introduction à AngularJS

×