Node.js


panorama de la plateforme


Par Thibaud Colas, partage en CC0

Sources d'information

Hello World


        console.log("Hello World");
    

// Load the http module to create an http server.
var http = require('http');

// Respond with Hello World to all requests.
var server = http.createServer(function (request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.end("Hello World\n");
});

// Listen on port 8000, IP defaults to 127.0.0.1
server.listen(8000);
    

Principes fondamentaux

JavaScript via V8

V8

APIs spécifiques


  • HTTP
  • Crypto
  • Network
  • File System


Implémentation de la spécification CommonJS

Mono-threadé asynchrone

Diagram of multi-threading code flow in Java

Source : StrongLoop, What Makes Node.js Faster Than Java?

Diagram of Node.js event loop

Source : StrongLoop, What Makes Node.js Faster Than Java?

Mono-threadé asynchrone

  • Opérations I/O asynchrones
  • Traitement des requêtes sur le même thread
  • Ordonnancé par le système

Écosystème communautaire

Line chart of module counts over time for different platforms. npm has the fastest growth

Source : Module Counts

Utilisations

API REST

Convient pour beaucoup de requêtes sans calcul lourd.
Exemple d'outils :

SPA

Mêmes avantages et outils que pour les APIs, et :

  • JavaScript pour le client et le serveur
  • Réutilisation de code (modèles, validation)
  • Exemple : MEAN Stack

Temps réel

Node est fait pour gérer un grand nombre de connexions / requêtes parallèles.

Outils par ligne de commande

Les packages Node respectent la philosophie UNIX :

  • Faire une seule chose, bien
  • Utiliser des streams en entrée et sortie
  • Favoriser la réutilisabilité
  • Exemple : mkdirp

Outillage

Tous les outils du développeur Front-End sont maintenant écrits en JavaScript :

Originalités

Utilisateurs



Plus d'informations : Infographie de StrongLoop

Démonstrations

Découvrir Node.js

NodeSchool

Nodeschool

https://nodeschool.io/

Autres ressources

Merci !


Par Thibaud Colas, partage en CC0