Une introduction à node.js

Date: 22/09/2011 | Catégories: Developpement,Open-source,Planet-libre,Web | Tags: ,,,,

Node.js est un framework implémentant, coté serveur, la version 8 du moteur Javascript de Google (pour une présentation rapide, je vous conseille de parcourir ces quelques slides).

L'objectif de ce billet est d'installer Node.js sur votre machine GNU/Linux et d'exécuter votre premier programme (hello.js).

Installation de Node.js depuis les sources

Il n'existe pas, à l'heure à laquelle je rédige ce billet, de "package" officiel de Node.js pour Debian/Ubuntu (voir le chapitre suivant pour une installation depuis un PPA). L'installation est cependant assez simple. Pour installer la dernière version (stable) depuis le dépôt officiel GIT, il suffit de saisir les commandes suivantes:

L'installation va se faire dans le répertoire /opt/node.

Pour vérifier que Node.js est bien installé sur votre machine:

Les modules avec NPM

Pour étendre les fonctions de bases de Node.js, il faut utiliser l'utilitaire NPM (Node Package Manager). Grâce à lui il est possible d'ajouter des packages à Node.js.

Pour installer Node.js depuis les sources (voir le chapitre suivant pour une installation depuis un PPA):

Je vous laisse ensuite regarder la documentation puis la liste des packages disponibles.

Installation depuis un PPA

Si vous êtes sous Ubuntu, il existe un PPA maintenant les dernières versions de Nodejs et de NPM. Pour installer le PPA sur votre système:

Puis l'installation de Nodejs et NPM:

Un premier exemple, ou le fameux "Hello world !"

On commence par éditer un fichier 'hello.js' contenant le code suivant:

Puis on lance le noeud (node) avec la commande:

Il ne reste plus (après avoir autorisé les requêtes vers le port TCP 1337 si vous avez un Firewall sur votre machine de test) qu'à pointer une navigateu Web vers l'URL donnée par la commande pour voir affiché le résultat:

Détail du code

On commence par initialiser les fonctions de Node.js dont on a besoin (voir la liste dans la documentation officielle). Pour notre exemple, nous avons besoin de générer un serveur HTTP (http) et de lancer une commande système (spawn) récupérant le nom FQDN de la machine.

[cc lang="javascript"]

var http = require('http');

var spawn = require ('child_process').spawn;

[/cc]

Après la définition d'une variable globale (contenant le numéro TCP du port d'écoute du serveur) ainsi que d'une fonction enlevant le caractère de retour à la ligne du chaine (chomp), on passe au vif du sujet en générant un serveur HTTP:

[cc lang="javascript"]

// Create the HTTP server

http.createServer(function (req, res) {

res.writeHead(200, {'Content-Type': 'text/plain'});

res.end('Hello Worldn');

}).listen(listenport);

[/cc]

Cette commande est "forké" (elle génère donc un daemon HTTP écoutant sur le port 'listenport' et renvoyant le message texte 'Hello World'). Enfin on affiche dans la console l'URL du serveur:

[cc lang="javascript"]

// Get the hostname (FQDN)

var listenaddress = spawn('hostname', ['-f']);

listenaddress.stdout.on('data', function (data) {

var fqdn = new String(data);

console.log('Server running listenning http://'+fqdn.chomp()+':'+listenport+'/');

});

[/cc]

Aller plus loin

Bien évidement, ce billet n'est qu'une simple introduction à ce framework (d'ou le titre :)). Le code donnée en exemple est sûrement "optimisable" mais à un objectif pédagogique.  Je reviendrai rapidement sur ce sujet en proposant des développement basée sur Node.js pour la supervision de nos belles machines. Stay tuned...

Sources ayant inspirées ce billet:

  • http://www.sheevaboite.Fr Johan

    Hello !
    Pour l’installation, je recommanderai de plutot utiliser les dépots de l’équipe de Node.js…
    Voir la suite ici : https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

  • http://www.it-wars.com/categorie8/dev Vincent RABAH

    Génial un de plus qui fait du Node.JS :) Attention toutes fois, car la version stable est la 0.4.12 et la version de dev 0.5.8 est instable, avec surtout des optimisations pour faire fonctionner NodeJS sur Windows, et de nombreux modules, dont npm (Node Package Manager) ne fonctionnent pas avec cette version de dev !
    git clone –depth 1 git://github.com/joyent/node.git
    git checkout v0.4.12

    Est préférable ;)

    Sinon, effectivement, mon site regorge de news et bouts de codes node.js <3

    A+

    • http://www.it-wars.com Vincent RABAH

      Oooops, entre les 2 git j’ai oublié qu’il faut faire un “cd node” !

    • http://www.nicolargo.com NicoLargo

      J’ai mis à jour la procédure d’install pour pointer sur la version STABLE (0.4.12) !

      Merci :)

  • Pingback: Une introduction à node.js | LorfDotNet()

  • http://www.allgameforum.net/fr allgameboy

    Très astucieux :)

  • Foucault

    Hello,

    J’ai téléchargé le tar.gz sur le site node.js.

    Où dois-je ensuite placer ce dernier pour faire l’installation?

    Une fois l’installation faite, où placer le premier fichier example.js?

    D’avance, merci.

  • Pingback: Une introduction à node.js | javascript.js | Scoop.it()

  • Pingback: Node.js, un framework javascript qui gagne à être connu ! | Zat's Hall()

  • Pingback: Server Side | Pearltrees()

  • Baylock

    Bonjour et merci pour ce tuto.

    Ceci dit, une remarque:

    Vous faites TOUS, francophones comme anglophones, le même raccourci:
    Vous expliquez comment installer node.js, super.
    Vous expliquez ce que doit contenir le fichier de test, super.
    Et pour ceux qui ne savent pas où exactement mettre ce fichier et bien qu’ils aillent se faire voir…

    Pas un seul bloggeur qui indique le “où” et ce, après une journée entière de recherche sur google.

    Dommage, cela aurait été la meilleure (et en fait la seule) manière de se différencier des autres.
    Car il faut bien le dire, votre tutoriel ressemble à s’y méprendre à mille autre sur le net.

    Désolé pour le coup de gueule mais voilà.

    • http://www.nicolargo.com nicolargo

      Ce qui est le plus drôle dans ton commentaire est que tu ne dis pas le “où” en question…
      Les commentaires sont faits pour contribuer à l’amélioration du billet. C’est cela l’esprit libre que j’essaye de promouvoir.
      La plupart du temps cela marche, d’autres fois non.
      Bien à troll.

    • rs459

      En fait avant de vouloir apprendre à utiliser node.js tu devrais apprendre à installer un programme, puis ensuite comprendre comment le configurer, puis ensuite quand tu liras l’exemple tu auras la réponse qui te sautera aux yeux…

      En l’occurence ici l’utilisateur choisi d’installer node.js dans ‘/opt/node’

  • Vilsafur

    Bonjour à tous,
    Encore un super tuto !
    J’ai hâte de voir le développement sur la supervision.

    Merci encore pour tout tes tutos bien utile et surtout bien expliqué.

  • Klydde

    Merci pour l’article !
    Par contre oui, il existe des profil de dev_admin ( sur win souvent ) qui bien que d’un haut niveau ne connaissent pas les rouages d’un fichier .profile.
    Certes ça s’apprend en 2mn chrono, une fois l’info croisée, et ça freine un peu. Mais pas de raison de crier ! Apprendre à monter un mongo ou un node en quelques heures, ça reste chouette.

  • Pingback: Une introduction à node.js - Le blog de NicoLargo | ma veille | Scoop.it()

  • Insane IT Skills

    Check this Free Node.js Training that gives you all the keys to a good start for a complete masteration of node.js by taking all the power of it.

    This course is regularly updated.

    https://www.udemy.com/nodejs-tutorial-from-scratch-by-examples