Si vous avez consulté mes tweets récemment, vous m’avez surement entendu parler de Node JS : Node ceci, Node cela, Node c’est magique, etc. Et pourtant, il y a encore quelques mois, je ne savais ni ce que c’était précisément, ni ce que ça pourrait faire pour moi. Maintenant, c’est moi qui cherche comment tirer parti au mieux de cette technologie pour ce que j’ai à faire. J’utilisais déjà Node avant (NPM, GruntJS, Weinre, etc.), mais ça a toujours été l’inconnu pour moi.

Node JS : concrètement

Grossièrement, parce que je ne saurais pas mieux l’expliquer : Node est une plateforme permettant d’utiliser JavaScript comme un langage côté serveur. Donc JS côté serveur, ça veut dire un langage basé sur des événements, qui peut par exemple créer un serveur HTTP et écouter un port. La conséquence la plus intéressante est sans doute que, en écoutant un port, Node peut proposer des réponses en temps réel.

J’avais commencé en aveugle, par faire le premier tutoriel de NodeSchool : LearnYouNode, qui permet d’apprendre les fondamentaux de Node (gestion des erreurs, callbacks, modules, etc.) et de façon pratique à mettre en place à un serveur, lui faire envoyer des fichiers, traiter des données, etc. Ce qui était déjà une grande étape pour moi.

cd votre/dossier/
git clone https://github.com/rvagg/learnyounode.git

Pour info, ce tuto nécessite des bases assez solides en JS pur, simplement pour pouvoir comprendre ce qu’on est en train de faire.

Ensuite, préparez un dossier de travail et lancez simplement :

learnyounode

Mais au final avec ce tuto, on apprend :

  • à traiter des fichiers sur le système avec Node
  • faire des requêtes (synchrones, asynchrones)
  • créer un serveur TCP
  • créer un serveur HTTP
  • créer une API via Node

Et c’est déjà pas mal. Mais après avoir fait ça, j’ai voulu aller un peu plus loin, donc je vous propose quelques pistes : mettre en place un serveur temps-réel avec Sockets.io, en faisant un petit salon de chat par exemple, connecter tout ça avec des événéments mobiles (onDeviceMotion par exemple), et vous pourriez avoir quelques usages intéressants. Personnellement, via mon serveur perso (Raspberry), je peux contrôler mes présentations de cours en ligne, via mon smartphone :)

Finalement, après le peu que j’en ai appris, je n’ai pas de mal à croire ceux qui voient en gros dans NodeJS le futur de PHP : plus performant, plus fonctionnel, et sur certains aspects, plus logique (de mon point de vue :) ). Plus rigoureux aussi, ce qui pour moi est une qualité.