SlideShare une entreprise Scribd logo
1  sur  64
JavaScript « proprement »

        (subjectif)
Guillaume Collic

Développeur et Formateur Agiliste Passionné
               Indépendant

gcollic@gmail.com / @gcollic / GuillaumeCollic.com


              Je traine du coté de :
        AgileBreizh-AgileLeanOuest / CodeOuest
               Agile Rennes / MugOuest
    BreizhCamp / AgileTourRennes / AgileOpenBreizh
Tout a commencé, j’étais un développeur C#
                  sans peur et sans reproches…




http://www.flickr.com/photos/antanask/5367478421 (CC BY-NC 2.0)
…mon code était sous contrôle
Jusqu’au jour où…




http://www.flickr.com/photos/bluesquarething/4264220448 (CC BY-NC-SA 2.0)
…on me proposa de réaliser une
        application web
 riche et complexe coté client



        Client



        Serveur
Par quel bout prendre le projet pour éviter
            le plat de spaghetti ?




http://www.flickr.com/photos/aiko82/3344617770 (CC BY-NC-SA 2.0)
Que feriez vous ?
J’ai eu un coup de stress …
…puis j’ai décidé d’accepter le challenge !




http://www.flickr.com/photos/wasteofspace/6022022223 (CC BY-SA 2.0)
J’ai découplé le code et le rendu

• Démo
Sélecteurs

•   #id
•   .classe
•   :visible / :hidden
•   :selected
•   [attribut=valeur]
•   Parent > enfant
•   …
Et beaucoup plus

•   Manipulation du dom
•   Utilitaires et template
•   Animations
•   Lisse les différences entre navigateurs
•   …
Résumé

• Découpler IHM et Code (jQuery)
Victoire !




http://www.flickr.com/photos/clintjcl/391565090 (CC BY-NC-SA 2.0)
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)
Heureusement, un sous ensemble de JavaScript
     plus propre réduit ces « WAT ??? »
                      • ===
                      • Patterns
                         – Module
                         – Orienté Objet
                            • Par prototypage
                            • Pseudo-Classique
                      • JsLint
                      • …
Pattern Module
(function() {
     var person;
     person = {};
     person.talk = function(){
          console.log("I am "+this.name);
     };
     person.name = "toto";
     person.talk();
}).call(this);
Résumé

• Découpler IHM et Code (jQuery)
• Utiliser « the good parts »
Génial !




http://www.flickr.com/photos/thesussman/2588904213 (CC BY-NC-ND 2.0)
…mais c’est répétitif,
                     un accident est vite arrivé !




http://www.flickr.com/photos/freakingnoob/3438012333/ (CC BY 2.0)
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)
Une refonte importante
de la syntaxe de JavaScript
Plugins pour les 10 principaux éditeurs
Gain de popularité lent, puis depuis 2011
    incontournable dans les conférences JS




http://www.flickr.com/photos/jurvetson/6472876377 (CC BY 2.0)
Intégré à Rails depuis 3.1




http://www.joeydevilla.com
Déjà un langage majeur

• Très forte inspiration pour la prochaine
  version de JavaScript




             Brendan Eich, créateur de JavaScript
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
Se compile en JavaScript propre

• Vous pouvez même apprendre à coder
  proprement en JavaScript en lisant le code
  compilé !
Site
Site
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
Exemple


person = {}
person.talk = ->
     console.log "I am "+this.name

person.name = "toto"
person.talk()
Exemple
(function() {
     var person;
     person = {};
     person.talk = function(){
          console.log("I am "+this.name);
     };
     person.name = "toto";
     person.talk();
}).call(this);
Exemple
(function() {
     var person;
     person = {};
     person.talk = function(){
          console.log("I am "+this.name);
     };
     person.name = "toto";
     person.talk();
}).call(this);
Exemple

var person;
person = {};
person.talk = function(){
     console.log("I am "+this.name);
};
person.name = "toto";
person.talk();
Exemple

var person;
person = {};
person.talk = function(){
     console.log("I am "+this.name);
};
person.name = "toto";
person.talk();
Exemple

var person
person = {}
person.talk = function()
     console.log "I am "+this.name

person.name = "toto"
person.talk()
Exemple

var person
person = {}
person.talk = function()
     console.log "I am "+this.name

person.name = "toto"
person.talk()
Exemple

var person
person = {}
person.talk = ->
     console.log "I am "+this.name

person.name = "toto"
person.talk()
Exemple

var person
person = {}
person.talk = ->
     console.log "I am "+this.name

person.name = "toto"
person.talk()
Exemple


person = {}
person.talk = ->
     console.log "I am "+this.name

person.name = "toto"
person.talk()
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
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
…

•   Existential Operator
•   Chained Comparisons
•   Destructuring Assignment
•   String Interpolation, Block Strings
•   Paramètres optionnelles
•   …
Syntaxe Objet Classique

• Démo
• Détails techniques (prototype, etc) dans la
  session de Christophe Jollivet
• Classe
• Membres
• Constructor
  – Initialisation de membres
Résumé

• Découpler IHM et Code (jQuery)
• Utiliser « the good parts »
• Utiliser CoffeeScript
J’étais enfin serein !
                       Le code était bien lisible…




http://www.flickr.com/photos/crashmaster/3323478244 (CC BY-NC 2.0)
… mais mon code était bogué




http://www.flickr.com/photos/lenscrack/5166587405 (CC BY-NC-ND 2.0)
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)
Tests Unitaires
• Classique, BDD, spécial asynchrone, …
  – Jasmine
  – QUnit
  – JSUnit
  – Mocha
  – Vows
  – JsTestDriver
  – SinonJS
  –…
Jasmine

• Démo
Matchers

   toEqual(y) / toBe(y) / toMatch(pattern)
                 toContain(y)
toBeDefined() / toBeUndefined() / toBeNull()
         toBeTruthy() / toBeFalsy()
   toBeLessThan(y) / toBeGreaterThan(y)
                  toThrow(e)
Résumé

•   Découpler IHM et Code (jQuery)
•   Utiliser « the good parts »
•   Utiliser CoffeeScript
•   Faire des tests unitaires
Super !




http://www.flickr.com/photos/40348123@N02/3996348907 (CC BY-NC 2.0)
F5 dans le browser, ça craint pour le TDD
        et l’intégration continue
•   Démo
•   JsTestDriver
•   Gem Jasmine-Headless-Webkit
•   …
TrafficLight

• Démo
Conclusion

•   Découpler IHM et Code (jQuery)
•   Utiliser « the good parts »
•   Utiliser CoffeeScript
•   Faire des tests unitaires
•   Travailler exactement comme dans les autres
    langages
Fantastique !




http://www.flickr.com/photos/qbasicer/2435671409 (CC BY-NC-ND 2.0)
Comment mon projet s’est passé
       avec tout ça ?
Comment mon projet s’est passé
          avec tout ça ?
• Annulé au démarrage
  – pour des raisons non techniques 
Mais je suis désormais prêt
                         pour le prochain !




http://www.flickr.com/photos/wasteofspace/6022022223 (CC BY-SA 2.0)
Pour aller plus loin

• Frameworks IHM
  – Backbone.js / Ember.js
  – KnockOut (MVVM)
• « Coder au front end » @_UT7
  – http://ut7.fr/formation/description/javascript.html
Communautés

• NantesJS
  – http://nantesjs.org

Contenu connexe

Tendances

Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieurFredy Fadel
 
JavaScript pour le développeur Java
JavaScript pour le développeur JavaJavaScript pour le développeur Java
JavaScript pour le développeur Javajollivetc
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptMicrosoft
 
Pourquoi et comment j'ai appris JavaScript
Pourquoi et comment j'ai appris JavaScriptPourquoi et comment j'ai appris JavaScript
Pourquoi et comment j'ai appris JavaScriptjollivetc
 
Présentation de ECMAScript 6
Présentation de ECMAScript 6Présentation de ECMAScript 6
Présentation de ECMAScript 6Julien CROUZET
 
Javascript les générateurs (generators)
Javascript   les générateurs (generators)Javascript   les générateurs (generators)
Javascript les générateurs (generators)Julien CROUZET
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScriptKristen Le Liboux
 
Cappuccino - ou comment créer une application web en 5 minutes
Cappuccino - ou comment créer une application web en 5 minutes Cappuccino - ou comment créer une application web en 5 minutes
Cappuccino - ou comment créer une application web en 5 minutes Geeks Anonymes
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express jsAbdoulaye Dieng
 
Réu technodejs
Réu technodejsRéu technodejs
Réu technodejsnaholyr
 
Présentation Javascript à l'ESI (Alger)
Présentation Javascript à l'ESI (Alger)Présentation Javascript à l'ESI (Alger)
Présentation Javascript à l'ESI (Alger)Dr Samir A. ROUABHI
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummiesMicrosoft
 
Présentation JavaScript
Présentation JavaScriptPrésentation JavaScript
Présentation JavaScripttarkan_
 
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expertCocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expertCocoaHeadsRNS
 
Rouabhi algiers meetup
Rouabhi algiers meetupRouabhi algiers meetup
Rouabhi algiers meetupSamir Rouabhi
 

Tendances (19)

Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieur
 
JavaScript pour le développeur Java
JavaScript pour le développeur JavaJavaScript pour le développeur Java
JavaScript pour le développeur Java
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Pourquoi et comment j'ai appris JavaScript
Pourquoi et comment j'ai appris JavaScriptPourquoi et comment j'ai appris JavaScript
Pourquoi et comment j'ai appris JavaScript
 
Présentation de ECMAScript 6
Présentation de ECMAScript 6Présentation de ECMAScript 6
Présentation de ECMAScript 6
 
Cours javascript v1
Cours javascript v1Cours javascript v1
Cours javascript v1
 
Javascript les générateurs (generators)
Javascript   les générateurs (generators)Javascript   les générateurs (generators)
Javascript les générateurs (generators)
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScript
 
Cappuccino - ou comment créer une application web en 5 minutes
Cappuccino - ou comment créer une application web en 5 minutes Cappuccino - ou comment créer une application web en 5 minutes
Cappuccino - ou comment créer une application web en 5 minutes
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
Réu technodejs
Réu technodejsRéu technodejs
Réu technodejs
 
Présentation Javascript à l'ESI (Alger)
Présentation Javascript à l'ESI (Alger)Présentation Javascript à l'ESI (Alger)
Présentation Javascript à l'ESI (Alger)
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummies
 
The Future of Javascript
The Future of JavascriptThe Future of Javascript
The Future of Javascript
 
Présentation JavaScript
Présentation JavaScriptPrésentation JavaScript
Présentation JavaScript
 
Promises Javascript
Promises JavascriptPromises Javascript
Promises Javascript
 
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expertCocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
 
Rouabhi algiers meetup
Rouabhi algiers meetupRouabhi algiers meetup
Rouabhi algiers meetup
 

En vedette

Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 
Inclure du Javascript de manière performante
Inclure du Javascript de manière performanteInclure du Javascript de manière performante
Inclure du Javascript de manière performanteJean-Pierre Vincent
 
Intro to testing Javascript with jasmine
Intro to testing Javascript with jasmineIntro to testing Javascript with jasmine
Intro to testing Javascript with jasmineTimothy Oxley
 
Scaling Social Games
Scaling Social GamesScaling Social Games
Scaling Social GamesPaolo Negri
 
Content Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ PublishContent Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ PublishJani Tarvainen
 
Mongrel2, a short introduction
Mongrel2, a short introductionMongrel2, a short introduction
Mongrel2, a short introductionPaolo Negri
 
Entrez dans le mouvement Maker à l’aide des technologies Microsoft
Entrez dans le mouvement Maker à l’aide des technologies MicrosoftEntrez dans le mouvement Maker à l’aide des technologies Microsoft
Entrez dans le mouvement Maker à l’aide des technologies MicrosoftFabrice BARBIN
 
Why you should come to DrupalSouth
Why you should come to DrupalSouthWhy you should come to DrupalSouth
Why you should come to DrupalSouthChris Ward
 
A Documentation Crash Course, LinuxCon 2016
A Documentation Crash Course, LinuxCon 2016A Documentation Crash Course, LinuxCon 2016
A Documentation Crash Course, LinuxCon 2016Chris Ward
 
Electron - Solving our cross platform dreams?
Electron - Solving our cross platform dreams?Electron - Solving our cross platform dreams?
Electron - Solving our cross platform dreams?Chris Ward
 
SimpleDb, an introduction
SimpleDb, an introductionSimpleDb, an introduction
SimpleDb, an introductionPaolo Negri
 
Offre développeur Javascript Back-end
Offre développeur Javascript Back-endOffre développeur Javascript Back-end
Offre développeur Javascript Back-endSite Analyzer
 
Erlang introduction geek2geek Berlin
Erlang introduction geek2geek BerlinErlang introduction geek2geek Berlin
Erlang introduction geek2geek BerlinPaolo Negri
 
Contentful Berlin Offices
Contentful Berlin OfficesContentful Berlin Offices
Contentful Berlin OfficesIrina Botea
 
Automate your docs, automate yourself
Automate your docs, automate yourselfAutomate your docs, automate yourself
Automate your docs, automate yourselfChris Ward
 
The Anatomy of Content Management (workshop by J Gollner at Intelligent Conte...
The Anatomy of Content Management (workshop by J Gollner at Intelligent Conte...The Anatomy of Content Management (workshop by J Gollner at Intelligent Conte...
The Anatomy of Content Management (workshop by J Gollner at Intelligent Conte...Joe Gollner
 
AWS Lambda in infrastructure
AWS Lambda in infrastructureAWS Lambda in infrastructure
AWS Lambda in infrastructurePaolo Negri
 
Le futur de Drupal et des applications web
Le futur de Drupal et des applications webLe futur de Drupal et des applications web
Le futur de Drupal et des applications webJulien Dubreuil
 
Distributed and concurrent programming with RabbitMQ and EventMachine Rails U...
Distributed and concurrent programming with RabbitMQ and EventMachine Rails U...Distributed and concurrent programming with RabbitMQ and EventMachine Rails U...
Distributed and concurrent programming with RabbitMQ and EventMachine Rails U...Paolo Negri
 

En vedette (20)

Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 
Inclure du Javascript de manière performante
Inclure du Javascript de manière performanteInclure du Javascript de manière performante
Inclure du Javascript de manière performante
 
Intro to testing Javascript with jasmine
Intro to testing Javascript with jasmineIntro to testing Javascript with jasmine
Intro to testing Javascript with jasmine
 
JASMINE
JASMINEJASMINE
JASMINE
 
Scaling Social Games
Scaling Social GamesScaling Social Games
Scaling Social Games
 
Content Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ PublishContent Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ Publish
 
Mongrel2, a short introduction
Mongrel2, a short introductionMongrel2, a short introduction
Mongrel2, a short introduction
 
Entrez dans le mouvement Maker à l’aide des technologies Microsoft
Entrez dans le mouvement Maker à l’aide des technologies MicrosoftEntrez dans le mouvement Maker à l’aide des technologies Microsoft
Entrez dans le mouvement Maker à l’aide des technologies Microsoft
 
Why you should come to DrupalSouth
Why you should come to DrupalSouthWhy you should come to DrupalSouth
Why you should come to DrupalSouth
 
A Documentation Crash Course, LinuxCon 2016
A Documentation Crash Course, LinuxCon 2016A Documentation Crash Course, LinuxCon 2016
A Documentation Crash Course, LinuxCon 2016
 
Electron - Solving our cross platform dreams?
Electron - Solving our cross platform dreams?Electron - Solving our cross platform dreams?
Electron - Solving our cross platform dreams?
 
SimpleDb, an introduction
SimpleDb, an introductionSimpleDb, an introduction
SimpleDb, an introduction
 
Offre développeur Javascript Back-end
Offre développeur Javascript Back-endOffre développeur Javascript Back-end
Offre développeur Javascript Back-end
 
Erlang introduction geek2geek Berlin
Erlang introduction geek2geek BerlinErlang introduction geek2geek Berlin
Erlang introduction geek2geek Berlin
 
Contentful Berlin Offices
Contentful Berlin OfficesContentful Berlin Offices
Contentful Berlin Offices
 
Automate your docs, automate yourself
Automate your docs, automate yourselfAutomate your docs, automate yourself
Automate your docs, automate yourself
 
The Anatomy of Content Management (workshop by J Gollner at Intelligent Conte...
The Anatomy of Content Management (workshop by J Gollner at Intelligent Conte...The Anatomy of Content Management (workshop by J Gollner at Intelligent Conte...
The Anatomy of Content Management (workshop by J Gollner at Intelligent Conte...
 
AWS Lambda in infrastructure
AWS Lambda in infrastructureAWS Lambda in infrastructure
AWS Lambda in infrastructure
 
Le futur de Drupal et des applications web
Le futur de Drupal et des applications webLe futur de Drupal et des applications web
Le futur de Drupal et des applications web
 
Distributed and concurrent programming with RabbitMQ and EventMachine Rails U...
Distributed and concurrent programming with RabbitMQ and EventMachine Rails U...Distributed and concurrent programming with RabbitMQ and EventMachine Rails U...
Distributed and concurrent programming with RabbitMQ and EventMachine Rails U...
 

Similaire à Javascript proprement

JavaScript Devoxx France 2013
JavaScript Devoxx France 2013JavaScript Devoxx France 2013
JavaScript Devoxx France 2013Romain Linsolas
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Julien Jakubowski
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Parischristophep21
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Microsoft
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
Babylon.js WebGL Paris
Babylon.js  WebGL ParisBabylon.js  WebGL Paris
Babylon.js WebGL Parisdavrous
 
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!Romain Linsolas
 
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
 
Etendre le Web avec les Web Components
Etendre le Web avec les Web ComponentsEtendre le Web avec les Web Components
Etendre le Web avec les Web Componentscjolif
 
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopConfoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopFrédéric Harper
 
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebFrédéric Harper
 
Decouvrez CreateJS
Decouvrez CreateJSDecouvrez CreateJS
Decouvrez CreateJSFCHAPLIN
 
What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015Wisembly
 
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot..."What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...TheFamily
 

Similaire à Javascript proprement (20)

JavaScript Devoxx France 2013
JavaScript Devoxx France 2013JavaScript Devoxx France 2013
JavaScript Devoxx France 2013
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
 
La performance sur mobile
La performance sur mobileLa performance sur mobile
La performance sur mobile
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Paris
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
NodeJs in real life
NodeJs in real lifeNodeJs in real life
NodeJs in real life
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Introduction à node.js
Introduction à node.js Introduction à node.js
Introduction à node.js
 
Babylon.js WebGL Paris
Babylon.js  WebGL ParisBabylon.js  WebGL Paris
Babylon.js WebGL Paris
 
Hackerspace jan-2013
Hackerspace jan-2013Hackerspace jan-2013
Hackerspace jan-2013
 
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!
 
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!
 
Etendre le Web avec les Web Components
Etendre le Web avec les Web ComponentsEtendre le Web avec les Web Components
Etendre le Web avec les Web Components
 
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopConfoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
 
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
 
Decouvrez CreateJS
Decouvrez CreateJSDecouvrez CreateJS
Decouvrez CreateJS
 
What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015
 
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot..."What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
 
Cours Ynov JS B1_1
Cours Ynov JS B1_1Cours Ynov JS B1_1
Cours Ynov JS B1_1
 

Javascript proprement