On Github ChristopheHoch / node-presentation
Réalisée par Christophe Hoch / @ChristopheHoch
Créé en 2009 par Ryan Dahl
Construit sur le moteur de rendu JavaScript de Chrome (V8)
Repose sur une bonne gestion des évenements
Utilisation intensive de code asynchrone
Mono-Thread supportant un très grand nombre de connections concurrentes
Utilisation de JavaScript de bout en bout d'un projet
Rapide et facile d'utilisation
Facilement scalable horizontalement
Communauté importante
Mauvaises performances pour les application necessitant beaucoup de CPU
Moins facile à utiliser avec une base de donnée relationnelle
Peu structuré (mais facilement structurable en modules)
... et font profiter la communauté de leur retour d'experience ainsi que de solutions open source
Chat
API RESTful
Serveur web
Alimentation de queues
Proxy
Traitement nécessitant beaucoup de ressource CPU
Node permet d'importer facilement des modules externes pouvant être des
La commande pour importer un module est la suivante:
// Composant http de node var http = require('http'); // Module Mongoose installé via NPM var mongoose = require('mongoose') // Fichier users.js situé au même niveau dans l'arborescence var user = require('./users')
Pour créer un module, il suffit d'exporter un objet...
// Fichier users.js exports.find = function(param) { ... };
// Fichier app.js var users = require('./users'); users.find(42);
Gestion puissante des dépendances
Recherche simplifiée via The Node Toolbox
+68 000 paquets
+5 000 000 téléchargements par jour
Configurable grâce à un fichier JSON
{ "name": "simple-blog", "description": "A simple blog in node", "version": "0.0.1", "scripts": { "start": "node src/server.js", "test": "grunt" }, "dependencies": { "express": "~3.4.8", "mongoose": ">=3.8" }, "devDependencies": { "mocha": "*" } }
Node dispose maintenant d'outils puissants pous faciliter et fiabiliser le dévelopement
Debugger: Node Inspector
Surveillance des source et redemarage du serveur: Nodemon
Mocha + Chai
QUnit
Jasmine
Grunt
Gulp
Syntaxe: JSHint / ESLint / JSLint
Complexité: Plato
Couverture de test: Blanket
Framerwork le plus utilisé avec Node
Construit sur le framework Connect
Très Modulable
Permet l'utililisation de templates
Fonctions utilisés par Express pouvant répondre à la requête ou transmettre à la fonction suivante
app.use(function(err, req, res, next){ if(!req.headers['token']) { return res.send(401) } next(); });
// Requête GET app.get('/resource', function (req, res, next){ ... }); app.get('/resource/:id', function (req, res, next){ ... }); // Requête POST app.post('/resource', function (req, res, next){ ... }); // Requête PUT app.put('/resource/:id', function (req, res, next){ ... }); // Requête DELETE app.delete('/resource/:id', function (req, res, next){ ... });
Attention, l'ordre des routes est importants