SlideShare une entreprise Scribd logo
1  sur  35
HELLO ANGULARJS
Mars 26, 2016
Meetup #1
The Moroccan AngularJS Developer Community
QUI SUIS JE ?
Ouadie LAHDIOUI
Consultant IT
@ouadielahdioui
ouadie-lahdioui
AGENDA
3
 Histoire de JavaScript
 AngularJS 1.x
 Coding dojo : Comment manger des spaghetti jQuery avec les baguettes magiques Angular ?
 Bonnes pratiques
VOYAGE DANS LE TEMPS
Pour mieux connaitre l'histoire de JavaScript
Attachez vous ceintures....
4
Mai - Décembre 1995
Création du Mocha / LiveScript / JavaScript
Par Brendan Erich dans 10 jours
Novembre 1990
Naissance du Web
1996
Création du JScript
Par Microsoft
HISTOIRE DE JAVASCRIPT
Voyage dans le temps ....
5
Juin 1997
Sortie de la spécification
ECMAScript
HISTOIRE DE JAVASCRIPT
6
Février 2005
AJAX
Par Jesse James Garrett
Août 2006
Invention de jQuery
Par John Resig
Voyage dans le temps ....
Les développeurs commencaient à faire des belles choses :
• Intégrer des composants graphiques
• Tirer le max de l’asynchrone avec Ajax
• Manipulation du DOM
HISTOIRE DE JAVASCRIPT
7
Février 2005
AJAX
Par Jesse James Garrett
Août 2006
Invention de jQuery
Par John Resig
Voyage dans le temps ....
Mais les belles choses ne durent pas longtemps
Les développeurs commencaient également à avoir :
• Trop de codes non structurés, difficilement testables et no réutilisables
• Une dépendence avec les HTMLeurs
• Des plates de spaghetti
Solution = Les Framworks
POURQUOI UN FRAMWORK JAVASCRIPT ?
 Écrire du code JavaScript de qualité, testable et réutilisable
 Gagner en productivité
 Plusieurs acteurs sur le même projet
 Implémente les patterns pour exploiter les leçons tirées par d’autres développeurs
 Documentation
8
HISTOIRE DE JAVASCRIPT
9
2012
AngularJS 1.0
2014
Annoncement du AngularJS 2.0
2015
AngularJS 1.4
2015
AngularJS 1.5
Voyage dans le temps ....
Octobre 2010
BackbonJS
Par Jeremy Ashkenas
1.1 1.2 1.3
ANGULAR JS 1.x
10
POURQUOI ANGULARJS ?
 Permet d’implémenter le pattern MVW pour structure le code, se qui améliore la qualité de
code
 Facilite la mise en place des tests unitaires et end-2-end
 Favorise la collaboration entre les développeurs et les intégrateurs HTML
 Meilleure expérience utilisateur avec les applications monopages
 Apporte aux applications web les services traditionnellement apportés côté serveur :
 lnjection de dépendances
 MVC
 Data-binding bidirectionnel
 Routing
 Templating
11
 Model-View-Whatever (whatever works for you)
Pattern MVW (a.k.a MV*)
ANGULARJS 1.x
MVC
MVVM
12
 Systèmes de templating : String statique + données = text ajouté au DOM
 Tout changement sur une donnée nécessite un nouveau merge
Data-binding bi-directionnel
ANGULARJS 1.x
13
 Un objet JavaScript
 Un domaine dans lequel des variables peuvent exister
Le scope
ANGULARJS 1.x
14
 Ce que voit l'utilisateur final
 Fichier HTML enrichi de certains attributs et balises propres à AngularJS
Les vues : Templates
ANGULARJS 1.x
15
 Le langage d'expressions d'AngularJS est utilisé pour le binding
 Des expressions valides :
Les vues : Expression
ANGULARJS 1.x
16
 Pou modifie l’affichage des données évaluées
 Syntaxe inspirée de linux : caractère pipe « | »
 Filtres pré-inclus : currency, date, json, lowercase, number, limitTo…
Les vues : Filtres
ANGULARJS 1.x
17
 Création du filtre dans le module :
Créer vos propres filtres
ANGULARJS 1.x
 L’application du filtrer sur le vue :
18
 Une fonction JavaScript liée à la vue par la directive ng-controller
Les contrôleurs
ANGULARJS 1.x
19
 Pour encapsuler l’ensemble des éléments d’une application AngularJS
 Un module permet de déclarer : directives, contrôleurs, filtres, constantes et services
Les modules
ANGULARJS 1.x
1. Créer le module myApp
2. L’affectation d’un nom de module à la directive ngApp
20
 Utiliser des objets sans se soucier de leur création
L’injection de dépendences
ANGULARJS 1.x
 L’injection des services automatiquement par leur nom :
21
 Singletons nommés qui vont fournir une tâche précise
 Ils peuvent être ensuite injectés dans un contrôleur ou un autre service
 Exemple de services natifs :
Les services
ANGULARJS 1.x
22
 $location :
 $http : Encapsule les appels HTTP via XMLHttpRequest ou JSONP
 Création d’un service dans le module :
Créer vos propres services
ANGULARJS 1.x
 L’injection du service dans un contrôlleur :
23
 Une directive = Flag placé dans la vue
 Les navigateurs ne reconnaissent pas ces flags, c’est à angularjs de les traiter
 Permet la création de composants réutilisables
Les directives
ANGULARJS 1.x
24
 Directives natives : ngHide, ngShow, ngIf, ngRepeat, ngClick ...
 Création d’une directive dans le module :
Créer vos propres directives
ANGULARJS 1.x
25
 L’utilisation dans la vue :
 Une application web accessible via une page web unique,
SPA : Single Page Application
ANGULARJS 1.x
1. Définir les routes : 2. Définir l’endroit où se “rendra” la vue :
26
Coding dojo
Source de l’image : http://www.evolutiontkd.co.uk/
C’EST QUOI UN CODING DOJO ?
• Un entrainement de programmation sans pression ni stress, pour s’améliorer en s'amusant
• Les coding dojo sont nés d’un constat simple de Dave thomas et Laurent Bossavit :
In software we do our practicing on the job, and that’s why we make mistakes on the job. We need to find
ways of splitting the practice from the profession. We need practice sessions.
Si je veux apprendre le Judo, je vais m’inscrire au dojo du coin et y passer une heure par semaine pendant
deux ans, au bout de quoi j’aurai peut-être envie de pratiquer plus assidûment. Si je veux apprendre la
programmation objet, mon employeur va me trouver une formation de trois jours à Java dans le catalogue
2004. Cherchez l’erreur.
Dave thomas
The Pragmatic Programmer
LAURENT BOSSAVIT
Pr de l'association eXtreme Programming France
28
C’EST QUOI UN RANDORI ?
Source de l’image : http://blog.valtech.fr/2008/03/25/coding-dojo-ruby/Source de l’image : http://blog.aikidojournal.com
• Une technique que l’on retrouve dans divers arts martiaux
• Il consiste en attaque d’une personne par plusieurs partenaires
• L’objectif est d’implémenter une solution de façon collaborative
29
ON Y VA ?
30
KATA : Comment manger des spaghetti jQuery avec les baguettes magiques Angular
BONNES PRATIQUES
 Avant d’utiliser une méthode fournie par jQuery, demandez vous toujours si AngularJS ne
propose pas une solution
 Pensez à utiliser le “One way data binding” pour améliorer les performances : {::name}}
 Il faut toujours utiliser « track by » dans les directive ngRepeat :
 Ne pas oublier le principe “Single Responsability” au moment de création des services
32
NON RESPECT DES BONNES PRATIQUES
 Un unique contrôleur pour toute l’application
 Code dupliqué dans les différents contrôleur
 Manipulation directe du DOM en dehors des directives
 Code complexe dans les expressions et non dans le contrôleur
 Je met un gros conteneur avec tout dedans et tout le monde y accède
33
BACK TO THE FUTURE OF JAVASCRIPT
34
Serveurs
(nodeJS)
Drones
(nodeJS)
JeuxRobots
(nodeJS)
Mobile
MERCI POUR VOTRE ATTENTION
Questions ?

Contenu connexe

Tendances

Débuter avec Rails::API & AngularJS
Débuter avec Rails::API & AngularJSDébuter avec Rails::API & AngularJS
Débuter avec Rails::API & AngularJSFrédéric DUPERIER
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Yves-Emmanuel Jutard
 
Introduction au Framework AngularJs
Introduction au Framework AngularJsIntroduction au Framework AngularJs
Introduction au Framework AngularJsRadhoueneRouached
 
Symfony with angular.pptx
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptxEsokia
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à AngularjsRossi Oddet
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJSAbdoulaye Dieng
 
AngularJS et autres techno frontend
AngularJS et autres techno frontendAngularJS et autres techno frontend
AngularJS et autres techno frontendyllieth
 
Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Nazih Heni
 
Google : Prise en charge de l'Ajax et de l'Angular JS
Google : Prise en charge de l'Ajax et de l'Angular JSGoogle : Prise en charge de l'Ajax et de l'Angular JS
Google : Prise en charge de l'Ajax et de l'Angular JSPeak Ace
 
Présentation de WCF
Présentation de WCFPrésentation de WCF
Présentation de WCFRomain Coste
 
M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4CERTyou Formation
 

Tendances (20)

AngularJS
AngularJSAngularJS
AngularJS
 
Débuter avec Rails::API & AngularJS
Débuter avec Rails::API & AngularJSDébuter avec Rails::API & AngularJS
Débuter avec Rails::API & AngularJS
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014
 
Introduction au Framework AngularJs
Introduction au Framework AngularJsIntroduction au Framework AngularJs
Introduction au Framework AngularJs
 
Symfony with angular.pptx
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptx
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à Angularjs
 
Prismic
PrismicPrismic
Prismic
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Intro à angular
Intro à angularIntro à angular
Intro à angular
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
 
Angular 2
Angular 2Angular 2
Angular 2
 
AngularJS et autres techno frontend
AngularJS et autres techno frontendAngularJS et autres techno frontend
AngularJS et autres techno frontend
 
Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"
 
Support cours angular
Support cours angularSupport cours angular
Support cours angular
 
Présentation Angular 2
Présentation Angular 2 Présentation Angular 2
Présentation Angular 2
 
Google : Prise en charge de l'Ajax et de l'Angular JS
Google : Prise en charge de l'Ajax et de l'Angular JSGoogle : Prise en charge de l'Ajax et de l'Angular JS
Google : Prise en charge de l'Ajax et de l'Angular JS
 
Présentation de WCF
Présentation de WCFPrésentation de WCF
Présentation de WCF
 
Jquery Mobile vs Twitter Bootstrap
Jquery Mobile vs Twitter BootstrapJquery Mobile vs Twitter Bootstrap
Jquery Mobile vs Twitter Bootstrap
 
M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4
 
Vue Introduction
Vue IntroductionVue Introduction
Vue Introduction
 

En vedette

REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre APIREST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre APIOuadie LAHDIOUI
 
Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Maxime Bernard
 
Why angular js Framework
Why angular js Framework Why angular js Framework
Why angular js Framework Sakthi Bro
 
Quick introduction to Angular 4 for AngularJS 1.5 developers
Quick introduction to Angular 4 for AngularJS 1.5 developersQuick introduction to Angular 4 for AngularJS 1.5 developers
Quick introduction to Angular 4 for AngularJS 1.5 developersPaweł Żurowski
 
AngularJS Architecture
AngularJS ArchitectureAngularJS Architecture
AngularJS ArchitectureEyal Vardi
 
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Ouadie LAHDIOUI
 
Apache camel et les entreprise integration patterns
Apache camel et les entreprise integration patternsApache camel et les entreprise integration patterns
Apache camel et les entreprise integration patternsOuadie LAHDIOUI
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Sofien Benrhouma
 

En vedette (9)

REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre APIREST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
 
Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?
 
Debug like a doctor
Debug like a doctorDebug like a doctor
Debug like a doctor
 
Why angular js Framework
Why angular js Framework Why angular js Framework
Why angular js Framework
 
Quick introduction to Angular 4 for AngularJS 1.5 developers
Quick introduction to Angular 4 for AngularJS 1.5 developersQuick introduction to Angular 4 for AngularJS 1.5 developers
Quick introduction to Angular 4 for AngularJS 1.5 developers
 
AngularJS Architecture
AngularJS ArchitectureAngularJS Architecture
AngularJS Architecture
 
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
 
Apache camel et les entreprise integration patterns
Apache camel et les entreprise integration patternsApache camel et les entreprise integration patterns
Apache camel et les entreprise integration patterns
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
 

Similaire à Hello AngularJS - Back to the future

Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdfimenhamada17
 
jQuery GTI780 & MTI780 ETS A09
jQuery   GTI780 & MTI780   ETS   A09jQuery   GTI780 & MTI780   ETS   A09
jQuery GTI780 & MTI780 ETS A09Claude Coulombe
 
Introduction aux web components
Introduction aux web componentsIntroduction aux web components
Introduction aux web componentsFrancois ANDRE
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Tugdual Grall
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Alexandre Marie
 
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3 ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3 Horacio Gonzalez
 
Paul valery et les Web components
Paul valery et les Web componentsPaul valery et les Web components
Paul valery et les Web componentsFrancois ANDRE
 
jQuery - GTI780 & MTI780 - ETS - A08
jQuery - GTI780 & MTI780 - ETS - A08jQuery - GTI780 & MTI780 - ETS - A08
jQuery - GTI780 & MTI780 - ETS - A08Claude Coulombe
 
Automatiser la qualite
Automatiser la qualiteAutomatiser la qualite
Automatiser la qualiteDamien Seguy
 
Softshake 2013 - Du JavaScript propre ? Challenge accepted!
Softshake 2013 - Du JavaScript propre ? Challenge accepted!Softshake 2013 - Du JavaScript propre ? Challenge accepted!
Softshake 2013 - Du JavaScript propre ? Challenge accepted!OCTO Technology
 
Cours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrrCours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrrinesrdissi60
 
Initiation au JavaScript
Initiation au JavaScriptInitiation au JavaScript
Initiation au JavaScriptStrasWeb
 
Angular 6, CLI 6, Material 6 (french)
Angular 6, CLI 6, Material 6 (french)Angular 6, CLI 6, Material 6 (french)
Angular 6, CLI 6, Material 6 (french)Laurent Duveau
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsOCTO Technology
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 

Similaire à Hello AngularJS - Back to the future (20)

Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdf
 
Angular.pdf
Angular.pdfAngular.pdf
Angular.pdf
 
jQuery GTI780 & MTI780 ETS A09
jQuery   GTI780 & MTI780   ETS   A09jQuery   GTI780 & MTI780   ETS   A09
jQuery GTI780 & MTI780 ETS A09
 
Framework JavaScript Web - Brief techno
Framework JavaScript Web - Brief technoFramework JavaScript Web - Brief techno
Framework JavaScript Web - Brief techno
 
Introduction aux web components
Introduction aux web componentsIntroduction aux web components
Introduction aux web components
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
Angular 11
Angular 11Angular 11
Angular 11
 
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3 ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
 
Paul valery et les Web components
Paul valery et les Web componentsPaul valery et les Web components
Paul valery et les Web components
 
jQuery - GTI780 & MTI780 - ETS - A08
jQuery - GTI780 & MTI780 - ETS - A08jQuery - GTI780 & MTI780 - ETS - A08
jQuery - GTI780 & MTI780 - ETS - A08
 
Angular retro
Angular retroAngular retro
Angular retro
 
Automatiser la qualite
Automatiser la qualiteAutomatiser la qualite
Automatiser la qualite
 
Softshake 2013 - Du JavaScript propre ? Challenge accepted!
Softshake 2013 - Du JavaScript propre ? Challenge accepted!Softshake 2013 - Du JavaScript propre ? Challenge accepted!
Softshake 2013 - Du JavaScript propre ? Challenge accepted!
 
Cours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrrCours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrr
 
Initiation au JavaScript
Initiation au JavaScriptInitiation au JavaScript
Initiation au JavaScript
 
Angular 6, CLI 6, Material 6 (french)
Angular 6, CLI 6, Material 6 (french)Angular 6, CLI 6, Material 6 (french)
Angular 6, CLI 6, Material 6 (french)
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les fronts
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 

Hello AngularJS - Back to the future

  • 1. HELLO ANGULARJS Mars 26, 2016 Meetup #1 The Moroccan AngularJS Developer Community
  • 2. QUI SUIS JE ? Ouadie LAHDIOUI Consultant IT @ouadielahdioui ouadie-lahdioui
  • 3. AGENDA 3  Histoire de JavaScript  AngularJS 1.x  Coding dojo : Comment manger des spaghetti jQuery avec les baguettes magiques Angular ?  Bonnes pratiques
  • 4. VOYAGE DANS LE TEMPS Pour mieux connaitre l'histoire de JavaScript Attachez vous ceintures.... 4
  • 5. Mai - Décembre 1995 Création du Mocha / LiveScript / JavaScript Par Brendan Erich dans 10 jours Novembre 1990 Naissance du Web 1996 Création du JScript Par Microsoft HISTOIRE DE JAVASCRIPT Voyage dans le temps .... 5 Juin 1997 Sortie de la spécification ECMAScript
  • 6. HISTOIRE DE JAVASCRIPT 6 Février 2005 AJAX Par Jesse James Garrett Août 2006 Invention de jQuery Par John Resig Voyage dans le temps .... Les développeurs commencaient à faire des belles choses : • Intégrer des composants graphiques • Tirer le max de l’asynchrone avec Ajax • Manipulation du DOM
  • 7. HISTOIRE DE JAVASCRIPT 7 Février 2005 AJAX Par Jesse James Garrett Août 2006 Invention de jQuery Par John Resig Voyage dans le temps .... Mais les belles choses ne durent pas longtemps Les développeurs commencaient également à avoir : • Trop de codes non structurés, difficilement testables et no réutilisables • Une dépendence avec les HTMLeurs • Des plates de spaghetti Solution = Les Framworks
  • 8. POURQUOI UN FRAMWORK JAVASCRIPT ?  Écrire du code JavaScript de qualité, testable et réutilisable  Gagner en productivité  Plusieurs acteurs sur le même projet  Implémente les patterns pour exploiter les leçons tirées par d’autres développeurs  Documentation 8
  • 9. HISTOIRE DE JAVASCRIPT 9 2012 AngularJS 1.0 2014 Annoncement du AngularJS 2.0 2015 AngularJS 1.4 2015 AngularJS 1.5 Voyage dans le temps .... Octobre 2010 BackbonJS Par Jeremy Ashkenas 1.1 1.2 1.3
  • 11. POURQUOI ANGULARJS ?  Permet d’implémenter le pattern MVW pour structure le code, se qui améliore la qualité de code  Facilite la mise en place des tests unitaires et end-2-end  Favorise la collaboration entre les développeurs et les intégrateurs HTML  Meilleure expérience utilisateur avec les applications monopages  Apporte aux applications web les services traditionnellement apportés côté serveur :  lnjection de dépendances  MVC  Data-binding bidirectionnel  Routing  Templating 11
  • 12.  Model-View-Whatever (whatever works for you) Pattern MVW (a.k.a MV*) ANGULARJS 1.x MVC MVVM 12
  • 13.  Systèmes de templating : String statique + données = text ajouté au DOM  Tout changement sur une donnée nécessite un nouveau merge Data-binding bi-directionnel ANGULARJS 1.x 13
  • 14.  Un objet JavaScript  Un domaine dans lequel des variables peuvent exister Le scope ANGULARJS 1.x 14
  • 15.  Ce que voit l'utilisateur final  Fichier HTML enrichi de certains attributs et balises propres à AngularJS Les vues : Templates ANGULARJS 1.x 15
  • 16.  Le langage d'expressions d'AngularJS est utilisé pour le binding  Des expressions valides : Les vues : Expression ANGULARJS 1.x 16
  • 17.  Pou modifie l’affichage des données évaluées  Syntaxe inspirée de linux : caractère pipe « | »  Filtres pré-inclus : currency, date, json, lowercase, number, limitTo… Les vues : Filtres ANGULARJS 1.x 17
  • 18.  Création du filtre dans le module : Créer vos propres filtres ANGULARJS 1.x  L’application du filtrer sur le vue : 18
  • 19.  Une fonction JavaScript liée à la vue par la directive ng-controller Les contrôleurs ANGULARJS 1.x 19
  • 20.  Pour encapsuler l’ensemble des éléments d’une application AngularJS  Un module permet de déclarer : directives, contrôleurs, filtres, constantes et services Les modules ANGULARJS 1.x 1. Créer le module myApp 2. L’affectation d’un nom de module à la directive ngApp 20
  • 21.  Utiliser des objets sans se soucier de leur création L’injection de dépendences ANGULARJS 1.x  L’injection des services automatiquement par leur nom : 21
  • 22.  Singletons nommés qui vont fournir une tâche précise  Ils peuvent être ensuite injectés dans un contrôleur ou un autre service  Exemple de services natifs : Les services ANGULARJS 1.x 22  $location :  $http : Encapsule les appels HTTP via XMLHttpRequest ou JSONP
  • 23.  Création d’un service dans le module : Créer vos propres services ANGULARJS 1.x  L’injection du service dans un contrôlleur : 23
  • 24.  Une directive = Flag placé dans la vue  Les navigateurs ne reconnaissent pas ces flags, c’est à angularjs de les traiter  Permet la création de composants réutilisables Les directives ANGULARJS 1.x 24  Directives natives : ngHide, ngShow, ngIf, ngRepeat, ngClick ...
  • 25.  Création d’une directive dans le module : Créer vos propres directives ANGULARJS 1.x 25  L’utilisation dans la vue :
  • 26.  Une application web accessible via une page web unique, SPA : Single Page Application ANGULARJS 1.x 1. Définir les routes : 2. Définir l’endroit où se “rendra” la vue : 26
  • 27. Coding dojo Source de l’image : http://www.evolutiontkd.co.uk/
  • 28. C’EST QUOI UN CODING DOJO ? • Un entrainement de programmation sans pression ni stress, pour s’améliorer en s'amusant • Les coding dojo sont nés d’un constat simple de Dave thomas et Laurent Bossavit : In software we do our practicing on the job, and that’s why we make mistakes on the job. We need to find ways of splitting the practice from the profession. We need practice sessions. Si je veux apprendre le Judo, je vais m’inscrire au dojo du coin et y passer une heure par semaine pendant deux ans, au bout de quoi j’aurai peut-être envie de pratiquer plus assidûment. Si je veux apprendre la programmation objet, mon employeur va me trouver une formation de trois jours à Java dans le catalogue 2004. Cherchez l’erreur. Dave thomas The Pragmatic Programmer LAURENT BOSSAVIT Pr de l'association eXtreme Programming France 28
  • 29. C’EST QUOI UN RANDORI ? Source de l’image : http://blog.valtech.fr/2008/03/25/coding-dojo-ruby/Source de l’image : http://blog.aikidojournal.com • Une technique que l’on retrouve dans divers arts martiaux • Il consiste en attaque d’une personne par plusieurs partenaires • L’objectif est d’implémenter une solution de façon collaborative 29
  • 30. ON Y VA ? 30 KATA : Comment manger des spaghetti jQuery avec les baguettes magiques Angular
  • 31.
  • 32. BONNES PRATIQUES  Avant d’utiliser une méthode fournie par jQuery, demandez vous toujours si AngularJS ne propose pas une solution  Pensez à utiliser le “One way data binding” pour améliorer les performances : {::name}}  Il faut toujours utiliser « track by » dans les directive ngRepeat :  Ne pas oublier le principe “Single Responsability” au moment de création des services 32
  • 33. NON RESPECT DES BONNES PRATIQUES  Un unique contrôleur pour toute l’application  Code dupliqué dans les différents contrôleur  Manipulation directe du DOM en dehors des directives  Code complexe dans les expressions et non dans le contrôleur  Je met un gros conteneur avec tout dedans et tout le monde y accède 33
  • 34. BACK TO THE FUTURE OF JAVASCRIPT 34 Serveurs (nodeJS) Drones (nodeJS) JeuxRobots (nodeJS) Mobile
  • 35. MERCI POUR VOTRE ATTENTION Questions ?

Notes de l'éditeur

  1. Qui n’as jamais fait du AngularJS ? Qui n’as jamais fait du JavaScript ? Qui a déjà travaillé avec une library comme jQuery ou autre ?
  2. Vus avez le droit de m’interompu à tous moment pour ajouter quelque chose ou poser une question Qui sais le filme BackToTheFuture ? Un film de science-fiction américain, ou deux amis Marty et Doc font des voyager dans le temps dans une voiture
  3. Novembre 1990 : naissance du Web, protocole d’échange de données basé sur le réseau Internet. décembre 1995 : apparition de JavaScript. Inventé par Brendan Erich – ingénieur pour Netscape Communications (Netscape Navigator) en seulement 10 jours. Sun Microsystems et Netscape étant partenaire, ce dernier décide de renommer LiveScript en JavaScript, pour servir les intérêts des 2 langages (la JVM devenant de plus en plus populaire). Microsoft réagit en développant JScript et en l’intégrant à Internet Explorer 3. juin 1997 : standardisation auprès de l’organisme Ecma International de la spécification ECMAScript. Depuis il y a eu la sortie de ECMAScript 3, implémenté par JavaScript 1.5, JScript et ActionScript. ES5 est la norme actuelle en vigueur en attendant ES6 qui débarque bientôt.
  4. Février 2005 : Jesse James Garrett introduit lle terme Ajax pour évoquer le concept de "communication asynchrone basée sur JavaScript et XML », a.k.a. XMLHttpRequest. Août 2006 : - invention de jQuery, par John Resig, qui souhaitait simplifier la manipulation du DOM HTML et la prise en compte de la compatibilité entre navigateurs.
  5. - jusqu’à présente on parle seulement du librairy - d’ou viens l’idée de penser au fait de créer des Framwork pour résoudre ces problémes
  6. Google voulait : Augmenter les performances Améliorer la productivité S’adapter au mobile Embrasser les nouveaux standards du Web
  7. Model: représente les données reçues du serveur View: contient l’ensemble des vues affichées à l’utilisateur Controller: contient la logique de l’application
  8. AngularJS, intègre nativement un moteur de Templating