Node.js et les nouvelles
technologies javascript
    Lundi 26 septembre 2011, @Smile
Qui je suis-je ?

• Khalid Jebbari
• DjebbZ sur drupal.org
• @Dj3bbZ (DjebbZ était pris...)
• Développeur Drupal depuis 2009, en
  Freelance depuis 2010
DISCLAIMER
Vous risquez d’arrêter
        Drupal
Node.js ?

• ≠ node Drupal
• Serveur d’interprétation javascript
• Utilise V8
• Evènementiel
• Non bloquant et asynchrone
Evènementiel, non
bloquant & asynchrone

• Dans Node.js, tout s’exécute en parallèle,
  sauf votre code
• ???
• Les E/S sont asynchrones
// module du coeur de Node
var http = require('http');
server = http.createServer();

// event listener
server.on(‘request’, function (request, response) {
  // event callback
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello Worldn');
});

server.listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
Modules Node.js

• Core : fs, http, ... 25+ /lib
• 2000+ avec NPM (~10/jour !)
• NPM : Drush pour Node.js
• Express, Socket.io, Jade, Stylus, ...
• CoffeeScript
+   ?
Le module Drupal
        “Node.js”
• http://drupal.org/project/nodejs
• Channels de communication (PubSub)
• Signal envoyé à un channel
• Utilisateurs (uid) inscrits au channel
  reçoivent message
• Parfait pour un chat ! Ou autre
  fonctionnalité “temps réel”
OU
     ?
Bon et moins bon
    (pour un Drupalien)
✤   Rapide !
                               -   Javascript (≠ PHP !)
✤   Contrôle total de son
    appli                      -   Évènementiel et
                                   asynchrone (un coup à
✤   Appli web dynamique,           prendre)
    API RESTful
                               -   Moins rapide de
✤   Un seul langage pour le        déployer une appli Node
    client et le serveur (on       de type “CMS”
    peut partager du code !)
Node est-il trop jeune
 pour la production ?
• Twitter
• Facebook
• eBay
• les threads de mySpace
• Development Seed
• Et bien d’autres...
La révolution Javascript
     dans le client
• Les navigateurs et les machines sont
  rapides
• Avec le mobile, on ne peut plus considérer
  les connexions comme fiables
• JSON est un excellent et léger moyen de
  communication entre applications
  • => Déporter la logique métier
    dans le browser
Frameworks Javascript
     côté client
• JavaScriptMVC,YUILibrary
• Objective-J, Cappuccino, SproutCore
• Sammy.js, AngularJS, KnockoutJS, Spine.js
• Backbone.js
• MVC (ou dérivé MV*/MVVM ...)
• Très léger : 5Kb minified & gzipped
• Basé sur Underscore.js
• Compatible jQuery/Zepto.js
Démo Backbone ?
• Base de données No-SQL
• Orienté documents
• Stockage au format JSON
• Interaction par HTTP
  (RESTful API)
Architecture web
    classique (3-tier)
       Client           HTML, CSS, Javascript


                        Apache, PHP, Drupal
Serveur d’application
                        Node.js

                        MySQL
  Base de données
                        MongoDB/CouchDB
Architecture web
   CouchApp (2-tier)
       Client           HTML, CSS, Javascript


                        Apache, PHP, Drupal
Serveur d’application
                        Node.js


  Base de données       CouchDB via HTTP
Drupal 8
        Initiative WSCCI
•   WSCCI = Web Services and Context in Core Initiative
•   Menée par Larry Garfield, @Crell
•   “Transformer Drupal en Serveur REST sur lequel est
    bâti un CMS”
•   Drupal pourra servir autre chose que du HTML
    (notamment du JSON !)
•   Extrêmement important pour la survie de Drupal
•   Drupal 8 sort en 2013-14, et d’ici là ...
Sources, biblio etc.
•   http://nodejs.org

•   http://www.slideshare.net/sh1mmer/a-language-for-the-internet-why-
    javascript-and-nodejs-is-right-for-internet-application

•   http://www.web-tambouille.fr/2011/02/15/node-js-partie-1-tout-ce-que-vous-
    devez-savoir-sur-node-js.html

•   http://london2011.drupal.org/conference/sessions/nodejs-and-drupal

•   https://github.com/joyent/node/wiki/modules

•   http://blog.nodejitsu.com/

•   Photos : http://memegenerator.net
Crédit : hellojenuine @ Flickr, http://www.flickr.com/photos/jenosaur/5461377850/


                          Questions ?

Node.js et les nouvelles technologies javascript

  • 1.
    Node.js et lesnouvelles technologies javascript Lundi 26 septembre 2011, @Smile
  • 2.
    Qui je suis-je? • Khalid Jebbari • DjebbZ sur drupal.org • @Dj3bbZ (DjebbZ était pris...) • Développeur Drupal depuis 2009, en Freelance depuis 2010
  • 3.
  • 4.
    Node.js ? • ≠node Drupal • Serveur d’interprétation javascript • Utilise V8 • Evènementiel • Non bloquant et asynchrone
  • 6.
    Evènementiel, non bloquant &asynchrone • Dans Node.js, tout s’exécute en parallèle, sauf votre code • ??? • Les E/S sont asynchrones
  • 7.
    // module ducoeur de Node var http = require('http'); server = http.createServer(); // event listener server.on(‘request’, function (request, response) { // event callback response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello Worldn'); }); server.listen(1337, "127.0.0.1"); console.log('Server running at http://127.0.0.1:1337/');
  • 8.
    Modules Node.js • Core: fs, http, ... 25+ /lib • 2000+ avec NPM (~10/jour !) • NPM : Drush pour Node.js • Express, Socket.io, Jade, Stylus, ... • CoffeeScript
  • 9.
    + ?
  • 10.
    Le module Drupal “Node.js” • http://drupal.org/project/nodejs • Channels de communication (PubSub) • Signal envoyé à un channel • Utilisateurs (uid) inscrits au channel reçoivent message • Parfait pour un chat ! Ou autre fonctionnalité “temps réel”
  • 11.
    OU ?
  • 13.
    Bon et moinsbon (pour un Drupalien) ✤ Rapide ! - Javascript (≠ PHP !) ✤ Contrôle total de son appli - Évènementiel et asynchrone (un coup à ✤ Appli web dynamique, prendre) API RESTful - Moins rapide de ✤ Un seul langage pour le déployer une appli Node client et le serveur (on de type “CMS” peut partager du code !)
  • 14.
    Node est-il tropjeune pour la production ? • Twitter • Facebook • eBay • les threads de mySpace • Development Seed • Et bien d’autres...
  • 15.
    La révolution Javascript dans le client • Les navigateurs et les machines sont rapides • Avec le mobile, on ne peut plus considérer les connexions comme fiables • JSON est un excellent et léger moyen de communication entre applications • => Déporter la logique métier dans le browser
  • 16.
    Frameworks Javascript côté client • JavaScriptMVC,YUILibrary • Objective-J, Cappuccino, SproutCore • Sammy.js, AngularJS, KnockoutJS, Spine.js • Backbone.js
  • 17.
    • MVC (oudérivé MV*/MVVM ...) • Très léger : 5Kb minified & gzipped • Basé sur Underscore.js • Compatible jQuery/Zepto.js
  • 18.
  • 19.
    • Base dedonnées No-SQL • Orienté documents • Stockage au format JSON • Interaction par HTTP (RESTful API)
  • 20.
    Architecture web classique (3-tier) Client HTML, CSS, Javascript Apache, PHP, Drupal Serveur d’application Node.js MySQL Base de données MongoDB/CouchDB
  • 21.
    Architecture web CouchApp (2-tier) Client HTML, CSS, Javascript Apache, PHP, Drupal Serveur d’application Node.js Base de données CouchDB via HTTP
  • 22.
    Drupal 8 Initiative WSCCI • WSCCI = Web Services and Context in Core Initiative • Menée par Larry Garfield, @Crell • “Transformer Drupal en Serveur REST sur lequel est bâti un CMS” • Drupal pourra servir autre chose que du HTML (notamment du JSON !) • Extrêmement important pour la survie de Drupal • Drupal 8 sort en 2013-14, et d’ici là ...
  • 23.
    Sources, biblio etc. • http://nodejs.org • http://www.slideshare.net/sh1mmer/a-language-for-the-internet-why- javascript-and-nodejs-is-right-for-internet-application • http://www.web-tambouille.fr/2011/02/15/node-js-partie-1-tout-ce-que-vous- devez-savoir-sur-node-js.html • http://london2011.drupal.org/conference/sessions/nodejs-and-drupal • https://github.com/joyent/node/wiki/modules • http://blog.nodejitsu.com/ • Photos : http://memegenerator.net
  • 24.
    Crédit : hellojenuine@ Flickr, http://www.flickr.com/photos/jenosaur/5461377850/ Questions ?