Node.js : du Javascript sur votre serveur
Signature : | Mis en ligne le : 13/11/2012
Catégorie(s) :
  • GNU/Linux Magazine
  • | Domaine :
    Commentez creative commons
    Article publié dans :
    Achetez
    Linux Magazine 136 :
    Version Papier
    Version PDF
    Page 1/5
    Page suivante »

    Comme la haute-couture, l’open source connaît des modes. MySQL et PHP dans les 90′. La virtualisation, Xen et KVM à la fin des années 2000. Pour la collection printemps/été 2011, la petite bête qui monte, qui monte, le truc pour être hype, pour se faire inviter dans tous les barcamps et les coding parties, c’est un interpréteur de code Javascript pour le serveur, propulsé par un moteur de Google et qui porte le petit nom qui va bien : voici node.js.

    1. Qu'est-ce qu'on parle de quoi là ?

    En fait, c'est plutôt simple. Lorsqu'on programme en Perl : on écrit un fichier texte plein de lignes de code, on l'enregistre, et on lance perl monfichier.pl. Lorsqu'on programme en PHP : on écrit un fichier texte plein de lignes de code, on l'enregistre, et on lance php monfichier.php. Eh bien maintenant, on peut écrire un programme en Javascript, l'enregistrer et lancer : node monfichier.js.

    Le créateur de node.js, Ryan Dahl, a pris le moteur Javascript v8, celui qui est extrêmement rapide et qui propulse le navigateur web Google Chrome. Il a ajouté les indispensables bibliothèques permettant d'accéder au système (processus, fichiers) et au réseau. node.js était né !

    La philosophie de node.js est de créer une boucle d'événements au lieu de se dupliquer (créer des threads), pour gérer plusieurs tâches en parallèle. De cette manière, paraît-il, un serveur web node.js peut gérer des millions de connexions concourantes. De cette manière surtout, nul besoin de gérer des accès simultanés à des structures de données : il n'y a pas d'accès simultané.

    2. Installation de node.js

    Je déteste cette partie des articles : rien de plus ennuyeux qu'une procédure d'installation. node.js étant relativement récent, la procédure la plus souvent employée consiste à l'installer dans le répertoire home d'un utilisateur dédié au lieu de la mélanger au reste du système. En avant toute.

    2.1. Création d'un utilisateur

    La création d'un utilisateur sous Linux se fait par le biais de la commande adduser. Nous allons créer un utilisateur nodejs.

    En fonction de votre distribution, vous aurez peut-être à répondre à quelques questions (par exemple, donner le mot de passe de nodejs).

    2.2. Installation du programme node.js

    Une fois l'utilisateur créé, on utilise su – pour se logguer en tant que nodejs:

    Vient ensuite le rituel maintenant célèbre de l'installation d'un logiciel à partir du code source. Notez qu'il vous faudra au préalable installer le compilateur g++ sur votre poste. Celui-ci peut être facilement mis en place en utilisant apt-get install g++ ( pour la famille Debian ) et yum install gcc-c++ (pour la famille Fedora). On utilise ici wget pour récupérer le fichier source depuis Internet, mais n'importe quel client web fait bien entendu l'affaire.

    Seule particularité : on installe node.js dans un répertoire local qui se trouve dans le home directory de l'utilisateur nodejs.

    Nous allons ensuite ajouter le chemin ~/local/bin dans notre path par défaut, de manière à ce que nous puissions utiliser l'exécutable node sans indiquer son emplacement complet. Pour cela, on ajoute la ligne suivante à la fin du fichier /home/nodejs/.bashrc :

    On se déloggue, puis on se reloggue ensuite afin que ces changements soient pris en compte.

    On peut maintenant entrer dans le vif du sujet : découvrons cette étrange bestiole.

    3.Caractéristique principale de node.js.

    3.1. Une seule chose à la fois

    Javascript n'est pas un langage multithread, node.js non plus. À n'importe quel instant dans le déroulement du programme, on est certain que node ne sera pas en train d'exécuter, en parallèle, d'autres parties du même programme. C'est sans doute étrange de préciser cela, mais lisez la suite, vous verrez qu'on a vite fait de s'embrouiller.

    Alors, à quoi ressemble un programme du type " Hello World " en node.js ? Eh bien, il tient en une seule ligne de code (que nous enregistrons dans le fichier hello1.js) :

    Nous exécutons ensuite ce programme :

    Les habitués du développement en Javascript sur les navigateurs, et plus particulièrement sous Firefox avec l'outil firebug, auront sans doute reconnu la sympathique fonction console.log, qui permet d'afficher sur une sortie de débogage toutes sortes de messages.

    3.2. Plusieurs choses à la fois

    Autant la partie " programme ", c'est-à-dire le code que nous allons écrire, sera exécuté en série, autant l'ensemble des appels externes que node.js effectuera seront réalisés en parallèle, en tâche de fond. C'est la principale particularité de node : Ryan a écrit un ensemble de bibliothèques asynchrones permettant d'interagir avec le monde extérieur, sans bloquer l'exécution du programme principal Javascript (notre programme).

    3.3. Asyncoua ?

    Asynchrone. En gros, cela signifie qu'on pose une question et qu'on n'attend pas la réponse. Ça surprend au début, n'est-ce pas ? Pour schématiser, dans un langage " classique ", on programme de cette façon :

    Sous node.js, on code comme ceci :

    Un exemple valant souvent mille explications, voyons comment lire le contenu d'un fichier local avec node. Nous parlerons de la directive require dans le chapitre suivant.

    Dans cet exemple, nous disons à node : lis-moi s'il te plait le fichier /etc/passwd. Lorsque tu auras lu ce fichier (ou à moins que tu rencontres une erreur), exécute la fonction que je te passe en argument.

    Vous souhaitez commenter cet article ?
    Brèves Flux RSS
    Édito : Linux Pratique N°77
    Édito : GNU/Linux Magazine N°160
    Édito : GNU/Linux Magazine Hors-Série N°66
    Édito : MISC Hors-Série N°7
    Édito : Linux Essentiel N°31
    Communication RSS Com. RSS Presse
    Linux Essentiel N°31 – Communiqué de presse
    GNU/Linux Magazine N°159 – Communiqué de presse
    Linux Magazine, Partenaire de Symfony Live Paris
    Linux Pratique, Partenaire des Rencontres du Libre
    Misc, Partenaire de Insomni’Hack
    Rechercher un article dans notre base documentaire :
    En kiosque Flux RSS

    Le tout nouveau Misc est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Linux Pratique est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau GNU/Linux Magazine est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau GNU/Linux Magazine HS est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Misc HS est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Linux Essentiel est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Open Silicium est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...