Node.js – Mettez du JavaScript dans votre serveur – Qu'est-ce que Node ?



Node.js – Mettez du JavaScript dans votre serveur – Qu'est-ce que Node ?

0 0


node-presentation

Présentation de Node.js réalisé avec Reveal.js

On Github ChristopheHoch / node-presentation

Node.js

Mettez du JavaScript dans votre serveur

Réalisée par Christophe Hoch / @ChristopheHoch

Qu'est-ce que Node ?

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

Atouts et points forts

Utilisation de JavaScript de bout en bout d'un projet

Rapide et facile d'utilisation

Facilement scalable horizontalement

Communauté importante

Points faibles

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)

Ils l'utilisent en production...

  • Paypal
  • Wallmart
  • LinkedIn
  • Groupon

... et font profiter la communauté de leur retour d'experience ainsi que de solutions open source

A quoi peut-il être utilisé ?

Chat

API RESTful

Serveur web

Alimentation de queues

Proxy

A quoi ne peut-il pas être utilisé ?

Traitement nécessitant beaucoup de ressource CPU

Gestion des modules

Node permet d'importer facilement des modules externes pouvant être des

  • composants de node
  • modules externes (installés via NPM)
  • fichiers du même projet

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);

Node Package Manager (NPM)

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": "*"
  }
}

Environnement

Node dispose maintenant d'outils puissants pous faciliter et fiabiliser le dévelopement

Aide au developement

Debugger: Node Inspector

Surveillance des source et redemarage du serveur: Nodemon

Frameworks de tests

Mocha + Chai

QUnit

Jasmine

Ordonnanceur de tâches

Grunt

Gulp

Analyseur de code

Syntaxe: JSHint / ESLint / JSLint

Complexité: Plato

Couverture de test: Blanket

Express

Framerwork le plus utilisé avec Node

Construit sur le framework Connect

Très Modulable

Permet l'utililisation de templates

Middlewares

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();
});

Routes

// 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