Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
-
Upload
julien-jakubowski -
Category
Technology
-
view
819 -
download
1
Transcript of Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
![Page 1: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/1.jpg)
10h40 - 11h30 - La Seine B
Du JavaScript propre ? Challenge Accepted!
![Page 2: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/2.jpg)
27 au 29 mars 2013
Du JavaScript propre ? Challenge Accepted!
Julien Jakubowski OCTO Technology
@jak78
Romain Linsolas Société Générale
@romaintaz
![Page 3: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/3.jpg)
Romain Linsolas
Développeur Java & Web Architecte Technique
@romaintaz
![Page 4: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/4.jpg)
Julien Jakubowski
Développeur Java & Web depuis 10 ans
@jak78
![Page 5: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/5.jpg)
Nous ne sommes pas…
Des gourous JavaScript
John Resig - jQuery
Douglas Crockford – JSLint, "JavaScript, The Good Parts"
![Page 6: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/6.jpg)
Parlons de JavaScript entre Javaïstes
JavaScript is to Java as Hamster is to Ham http://coding.smashingmagazine.com/2009/07/29/misunderstanding-markup-xhtml-2-comic-strip/
![Page 7: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/7.jpg)
Nous allons aussi parler de…
Darth Vader Maroilles Bière
![Page 8: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/8.jpg)
Pourquoi cette présentation ?
![Page 9: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/9.jpg)
En 2003
![Page 10: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/10.jpg)
Le JavaScript est partout !
Runtime le plus distribué Mobilité Même côté serveur ( , …)
![Page 11: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/11.jpg)
Les grands du web
![Page 12: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/12.jpg)
Les grands du web
![Page 13: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/13.jpg)
Nouveaux besoins
Les utilisateurs veulent des applications vivantes, réactives et dynamiques !
Enjeu de qualité Volume de code important
Fini de jouer !
![Page 14: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/14.jpg)
100,000 lignes de code JavaScript ?
Young man hidden behind table - © 2011 Richard Hernández Arrondo
![Page 15: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/15.jpg)
Le JavaScript c'est SALE surprenant
Pourquoi ça fait peur ?
![Page 16: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/16.jpg)
WAT ? > [] + [] "" > [] + {} [object Object] > {} + [] 0 > {} + {} NaN > ++[[]][+[]]+[+[]] === "10" true
![Page 17: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/17.jpg)
WAT???
Gary Bernhardt http://codemash.org https://www.destroyallsoftware.com/talks/wat
![Page 18: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/18.jpg)
Darth Vader Maroilles Bière
![Page 19: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/19.jpg)
Autre problème JavaScript
WAT???
![Page 20: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/20.jpg)
Pollution de l'espace de nommage
![Page 21: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/21.jpg)
Scope global par défaut
![Page 22: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/22.jpg)
Tout est public par défaut
![Page 23: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/23.jpg)
Darth Vader Maroilles Bière
![Page 24: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/24.jpg)
Et ce n'est pas tout !
Le mot clé this (plus surprenant que sale) Ordre de déclaration de var Etc.
![Page 25: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/25.jpg)
Mais le plus sale
Pollution de l'espace de nommage Tout est global par défaut Code non testé
![Page 26: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/26.jpg)
Oui mais…
![Page 27: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/27.jpg)
![Page 28: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/28.jpg)
Nous allons aussi parler de…
Darth Vader Maroilles Bière
![Page 29: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/29.jpg)
Comment coder proprement 100,000 lignes
en JavaScript ?
![Page 30: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/30.jpg)
On pourrait éviter le JavaScript…
Déléguer
• GWT • JSF • Vaadin • Etc.
![Page 31: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/31.jpg)
On peut aussi "améliorer" JavaScript
Langage web orienté objet pour combler les lacunes de JavaScript
Un JavaScript à l’écriture simplifiée
![Page 32: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/32.jpg)
Exemple de CoffeeScript JavaScript
![Page 33: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/33.jpg)
Architectures MV*
![Page 34: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/34.jpg)
Architecture MVC classique
Client Serveur
Asynchrone
<html> + JS
Controller
View Model
![Page 35: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/35.jpg)
Mes besoins aujourd'hui
Temps de réponse instantané Gestion de réseaux lents (mobiles…) Mode déconnecté
![Page 36: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/36.jpg)
Architecture MV* en JavaScript
Client Serveur
View Controller
Model
…
![Page 37: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/37.jpg)
Question implémentation
Frameworks optionnels, mais aident beaucoup Pas encore de standard
![Page 38: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/38.jpg)
Modulariser
![Page 39: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/39.jpg)
Qu'est-ce qu'un module ?
Représente un ensemble de code Isolation – faible couplage Présente une interface
![Page 40: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/40.jpg)
Un module basique - Présentation
![Page 41: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/41.jpg)
Un module basique
![Page 42: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/42.jpg)
Un module basique
![Page 43: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/43.jpg)
Un module basique
![Page 44: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/44.jpg)
Un module basique
![Page 45: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/45.jpg)
Un module basique
![Page 46: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/46.jpg)
Un module basique
![Page 47: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/47.jpg)
Espace de nommage
![Page 48: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/48.jpg)
Diviser en plusieurs fichiers .js ?
Temps de chargement Pas de gestion des dépendances
![Page 49: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/49.jpg)
AMD, Asynchronous Module Definition
Définition de dépendances
jQuery
beers.js
Mustache
![Page 50: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/50.jpg)
AMD, Asynchronous Module Definition
Chargements parallèles, à la demande
jQuery Mustache beers.js sodas.js
jQuery beers.js
Mustache
![Page 51: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/51.jpg)
Eviter les parties sales
http://www.gettyimages.fr/detail/photo/hands-of-a-blacksmith-in-his-studio-image-libre-de-droits/109889293
![Page 52: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/52.jpg)
JsLint
Détection des ugly parts Equivalent à PMD / Checkstyle / FindBugs pour JS Intégration dans les IDE
![Page 53: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/53.jpg)
Intégration dans Eclipse
![Page 54: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/54.jpg)
Expressivité
http://www.gettyimages.fr/detail/photo/detail-of-sheet-music-image-libre-de-droits/AA004801
![Page 55: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/55.jpg)
Qu'est-ce qu'un code expressif ?
C'est un code simple, concis, lisible
![Page 56: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/56.jpg)
Mauvais exemple
Pollution , mauvaise lisibilité => SALE
![Page 57: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/57.jpg)
Avec
Pas de pollution Lisibilité accrue Code propre
![Page 58: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/58.jpg)
jQuery, c'est surtout : • Lisibilité du code, expressivité • Simplification de ce qui est utile : manipulation du DOM, Ajax…
Mais aussi : • Structuration du code en plugins • Nombreux plugins existants
![Page 59: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/59.jpg)
Templates
![Page 60: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/60.jpg)
A la main
![Page 61: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/61.jpg)
Avec template (Mustache.js)
![Page 62: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/62.jpg)
Outils de templating
Mustache
![Page 63: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/63.jpg)
Tests automatisés
![Page 64: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/64.jpg)
Tests d'IHM
Conditions réelles Pas vraiment adapté au TDD
Selenium Windmill
![Page 65: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/65.jpg)
TDD pour JavaScript
En Java En JavaScript
TestNG
![Page 66: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/66.jpg)
Tests avec Jasmine
![Page 67: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/67.jpg)
Ecosystème
University « Le fantôme, le zombie et Testacular… »
Jean-Laurent De Morlhon et Pierre Gayvallet
![Page 68: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/68.jpg)
TDD en JavaScript
![Page 69: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/69.jpg)
Faire du TDD pour JavaScript
Vous devez en faire en 2013 ! Vous n'avez plus d'excuses
![Page 70: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/70.jpg)
Automatisation
![Page 71: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/71.jpg)
Détecter et alerter
Quand un test échoue Quand une partie sale est utilisée S'il y a une erreur de syntaxe
Jasmine JsLint Google Closure Compiler
Intégration dans Maven, Jenkins ou Sonar
![Page 72: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/72.jpg)
Intégration continue avec Jenkins
http://localhost:8080/job/Test%20Jasmine/1/consol
![Page 73: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/73.jpg)
Analyse qualité avec Sonar
![Page 74: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/74.jpg)
D'autres outils utiles
![Page 75: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/75.jpg)
100,000 lignes de JavaScript ?
Modules MV* Parties sales évitées
Expressivité Automatisation Tests
![Page 76: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/76.jpg)
Le monde des bisounours ?
![Page 77: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/77.jpg)
Le monde des bisounours ? Oui mais non !
Intégration Pérennité Apprentissage
![Page 78: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/78.jpg)
Businessman sitting at desk with feet up - Paul Bradbury
![Page 79: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/79.jpg)
Références Eloquent JavaScript
http://eloquentjavascript.net/contents.html
JavaScript Garden
http://bonsaiden.github.com/JavaScript-Garden/
Learning Advanced JavaScript - J. Resig
http://ejohn.org/apps/learn/
JavaScript: the Good Parts - D. Crockford
![Page 80: Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013](https://reader035.fdocuments.us/reader035/viewer/2022081400/5560b63dd8b42afe3b8b4a43/html5/thumbnails/80.jpg)
Questions ?
@jak78 @romaintaz