NodeJS est une plateforme construite sur le moteur JavaScript V8 de Chrome qui permet de développer des applications en utilisant du JavaScript. Il se distingue des autres plateformes grâce à une approche non bloquante permettant d’effectuer des entrées/sorties (I/O) de manière asynchrone.

Pourquoi NodeJS ?

Avant de commencer à découvrir une nouvelle technologie, il est important d’en comprendre les spécificités. Pour comprendre nous allons partir de la description donnée sur le site officiel :

Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js’ package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

  • built on Chrome’s V8 JavaScript engine : Afin d’interpréter le code que l’on va écrire en JavaScript NodeJS se repose sur le moteur V8 qui équipe actuellement Chrome. Ce moteur a été amélioré gràce à la concurrence entre les naigateurs et permet de créer un script avec un langage familier tout en gardant un temps d’éxécution optimal.
  • event-driven model : Le code que l’on va écrire va être basé sur un système d’évènement. Les objets que l’on va créer emettront des évènements lors de leur cycle de vie. Il sera ensuite possible de souscrire et d’écouter ces évènements afin d’effectuer des opérations spécifiques lorsqu’ils sont émits. C’est une méthode qui ressemble à celle que lon utilise actuellement côté navigateur avec la méthode addEventListener
  • non-blocking I/O model : Lors du déroulement d’un script il y a souvent des phases « d’attente » ou le script bloque en ettendant une entrée ou une sortie. Pendant ce temps d’attente, le script ne fais rien et ne peut traiter de nouvelles tâches. Au sein de NodeJS la plupart de ces entrée/sorties vont se dérouler de manière asynchrone gràce à la librairie libuv. Ceci permet de gérer plus de concurrences en évitant les phases d’attentes.
  • Node.js’ package ecosystem : NodeJS dispose de son gestionnaire de paquet officiel NPM qui permetttra de télécharger et de partager des librairies. Il dispose d’une communauté très importante et d’un très grand nombre de paquets.

Ce que n’est pas NodeJS

NodeJS n’est pas un framework. Ce n’est pas un outil qui vous permettra de mettre en place une application web rapidement avec peu de code. C’est un outil plus bas niveau qui vous permettra de communiquer avec le système à travers différentes librairies C++ et avec un langage familier. Comme vu précédemment, c’est un outil que l’on va sélectionner si on a besoin de gérer un grand nombre de demandes sur un seul thread en évitant les lenteurs dû à la nature synchrone d’autres langages.

Hello world

Voici un exemple d’utilisation, comment faire un serveur http avec Node.js (exemple.js)

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
Puis exécutez ce fichier avec la commande suivante :
$ node example.js
Server running at http://127.0.0.1:1337/