Post on 21-Jun-2015
description
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
DISCLAIMERVous 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 Nodevar http = require('http');server = http.createServer();
// event listenerserver.on(‘request’, function (request, response) {
// event callback response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n');});
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 !
✤ Contrôle total de son appli
✤ Appli web dynamique, API RESTful
✤ Un seul langage pour le client et le serveur (on peut partager du code !)
- Javascript (≠ PHP !)
- Évènementiel et asynchrone (un coup à prendre)
- Moins rapide de déployer une appli Node de type “CMS”
Node est-il trop jeune pour la production ?• Twitter
• 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 Javascriptcô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
Serveur d’application
Base de données
HTML, CSS, Javascript
Apache, PHP, DrupalNode.js
MySQLMongoDB/CouchDB
Architecture web CouchApp (2-tier)
Serveur d’application
Client
Base de données
HTML, CSS, Javascript
Apache, PHP, DrupalNode.js
CouchDB via HTTP
Drupal 8Initiative 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 ?