Démarrer un projet Node.js

Publié dans Javascript | Marqué avec ,
Share

Je n’arrive pas à trouver un fichu « Hello World! » expliquant correctement comment créer une bonne base pour un projet Node.js ! Fichtre !
Ce que je déduis pour l’instant provient principalement de cet article Tutorial: RabbitMQ + Node.js et de ce que je commence à comprendre de cet environnement.

nodejs-logo

Gestion des dépendances : package.json

Avant toute chose, il est de bon ton de créer un fichier package.json pour tout nouveau projet. Ce fichier décrit le projet et explicite surtout les dépendances (i.e. les bibliothèques externes, appelés « modules » en Node.js) nécessaires à son bon fonctionnement.
Grâce à ce petit descriptif, installer un projet consiste à utiliser la commande npm install pour télécharger toutes les dépendances (ou npm update pour les mettre à jour ou en rajouter) et les placer dans le dossier « node_modules ». Il devient alors possible de les utiliser facilement dans le code Javascript à l’aide de require("module name").

En PHP, Composer fait la même chose ! Bosser avec ce genre d’environnement devient d’un seul coup très très agréable !

Structure d’un nouveau projet Node.js

J’en suis encore au stade des conjectures…

  • Le fichier principal (démarrant le serveur HTTP ou autre) se nomme server.js
  • Un fichier de configuration nommé config.json contient touts les paramètres nécessaires au bon fonctionnement de l’application. On y accède facilement dans le code Node.js en utilisant :
    var config = require('./config.json');
    // Usage
    console.log(config.attr1);
    // ...
    
  • Les CSS, les images et les fichiers Javascript à utiliser côté client sont dans un dossier nommé « public ».
  • Les vues sont dans un dossier nommé « views ».

Au final, j’obtiens la structure suivante :

node_modules/
public/
   img/
   css/
      style.css
   js/
      jquery.min.js
      socket.io.min.js
      ...
view/
   layout-base.tpl
   ...
config.json
package.json
server.js

Les packages qui vont bien

Faire du Web plus rapidement avec Express

Comme framework Web, j’utilise Express. Apparemment, c’est LE framework à utiliser. Je confirme qu’il est bien pratique pour gérer des routes proprement. Je ne sais pas encore exactement quel structure adopter pour un projet un peu conséquent. Pour l’instant, chez moi, tout est dans server.js.

Moteur de template

Pour l’instant j’utilise Jade, mais je ne suis pas convaincu. Sur un autre projet j’ai utilisé Markup dont la syntaxe me plaisait beaucoup plus, par contre je ne sais pas à quel point il est utilisable avec Node.js.

D’autres packages utiles

RabbitMQ

RabbitMQ est un framework fournissant une abstraction pour le protocole de communication AMQP dans de nombreux langages. AMQP c’est un genre de XMPP (i.e. Jabber) qui doit encore me convaincre. Bref, l’idée derrière ce protocole de communication c’est d’arrêter de faire du « tout est n’importe quoi over HTTP ».
Faire du RabbitMQ en Node.js est tout à faire possible :

Socket.IO

Quant à Socket.IO c’est un moyen de faire du push (i.e. eventing) entre le serveur et le client. En gros, lorsqu’une page Web est déjà chargé, le Javascript tournant sur cette page (côté client) peut être directement notifié d’un nouvel événement (ex : nouveau message, …), sans avoir à contacter le serveur toutes les 5s.

Voilà qui est déjà un peu plus clair dans ma tête 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*