16. Pas si simple.
JavaScript a de sacrés mauvais cotés !
• Démo
• Variables globales
• comportement non intuitifs
• et bien d’autres !
• (cf. session précédente de Christophe Jollivet)
17. Heureusement, un sous ensemble de JavaScript
plus propre réduit ces « WAT ??? »
• ===
• Patterns
– Module
– Orienté Objet
• Par prototypage
• Pseudo-Classique
• JsLint
• …
18. Pattern Module
(function() {
var person;
person = {};
person.talk = function(){
console.log("I am "+this.name);
};
person.name = "toto";
person.talk();
}).call(this);
21. …mais c’est répétitif,
un accident est vite arrivé !
http://www.flickr.com/photos/freakingnoob/3438012333/ (CC BY 2.0)
22. Pourquoi pas un langage basé sur les good
parts pour cacher les mauvais côtés de JS ?
http://www.flickr.com/photos/desiitaly/2193724466 (CC BY 2.0)
27. Déjà un langage majeur
• Très forte inspiration pour la prochaine
version de JavaScript
Brendan Eich, créateur de JavaScript
28. Peut être utilisé n’importe où
où JavaScript est utilisé
• La règle d’or de CoffeeScript :
« C’est juste du JavaScript »
• N’inclut aucun frameworks
29. Se compile en JavaScript propre
• Vous pouvez même apprendre à coder
proprement en JavaScript en lisant le code
compilé !
32. Principes
• Supprime la ponctuation superflu
– Ressemble à Ruby, se base sur l’indentation
• Raccourci les mots clés les plus fréquents
– ‘@’ compile en ‘this.’
– ‘->’ compile en ‘function()’
– ‘(x,y) ->’ compile en ‘function(x,y)’
– ‘Return’ par défaut sur la dernière instruction
43. Compilateur
• REPL
– Coffee
• Évalue
– Coffee –e "MonCode"
• Affiche le JS
– Coffee –p Cible
• Évalue et affiche le JS
– Coffee –pe "MonCode"
• Compile une fois
– Coffee –c Cible
• Compile à chaque modification
– Coffee –cw Cible
44. Array comprehensions
(Linq, ruby,…)
• For n in number
• For epsilon in number when epsilon < 1
• For odd in number by 2
• For person,index in persons
• For key of object
• For key,value of object
46. Syntaxe Objet Classique
• Démo
• Détails techniques (prototype, etc) dans la
session de Christophe Jollivet
• Classe
• Membres
• Constructor
– Initialisation de membres
47. Résumé
• Découpler IHM et Code (jQuery)
• Utiliser « the good parts »
• Utiliser CoffeeScript
48. J’étais enfin serein !
Le code était bien lisible…
http://www.flickr.com/photos/crashmaster/3323478244 (CC BY-NC 2.0)
49. … mais mon code était bogué
http://www.flickr.com/photos/lenscrack/5166587405 (CC BY-NC-ND 2.0)
50. Réfléchissons. Jamais, je ne coderais côté
serveur sans tests unitaires,
pourquoi ce serait différent ici ?!
http://www.flickr.com/photos/braintoad/2669638050 (CC BY-NC-SA 2.0)
58. Conclusion
• Découpler IHM et Code (jQuery)
• Utiliser « the good parts »
• Utiliser CoffeeScript
• Faire des tests unitaires
• Travailler exactement comme dans les autres
langages
61. Comment mon projet s’est passé
avec tout ça ?
• Annulé au démarrage
– pour des raisons non techniques
62. Mais je suis désormais prêt
pour le prochain !
http://www.flickr.com/photos/wasteofspace/6022022223 (CC BY-SA 2.0)
63. Pour aller plus loin
• Frameworks IHM
– Backbone.js / Ember.js
– KnockOut (MVVM)
• « Coder au front end » @_UT7
– http://ut7.fr/formation/description/javascript.html