Node.js, express.js et autres découvertes

J’ai « commis » un mini-projet de test, afin de découvrir node.js et plus spécifiquement express (ou express.js), un mico-framework qui s’appuie sur node.js.

J’en ai profité pour jeter un coup d’oeil à mongoDB, et un ORM node.js de mongoDB qui s’appelle mongoose.

Voici le lien github.

J’aime

  • tout est évènement, rien n’est bloquant. Le language Javascript v8 est ultra-rapide, donc si on ajoute le fait que rien n’est bloquant, alors wooooww!!
  • Un seul language client-side et server-side, et des librairies qui parfois fonctionnent des 2 côtés (le même fichier!!!).

J’aime un peu moins

  • un léger bémol sur la documentation de express: la doc est là, mais j’ai du googler de nombreuses chose, ou pire, aller voir le source (non, je sais il n’y a rien de grave, au contraire…)
  • C’est une technologie (encore trop?) récente: les numéros de versions (de node.js, expess, …) évoluent rapidement, et les différents packages ne sont pas forcément compatible.
  • (lié au point précédent) Il y a des milliers de packages « qui font la même chose »: impossible de compter combien de « template engines » existent, ou de client mySQL (taper « nodejs mysql » dans google pour voir…)
  • Ça m’a fait réalisé que je ne maitrise pas toutes les subtilités du Javascript. Mais là, je ne peux blamer que moi-même.

J’aime pas

Rien, j’aime tout.

Pour conclure

J’adore! J’aime! … mais j’attends un peu encore pour l’utiliser en production. Quoique, pour utiliser les webSockets et Socket.io: trop fort!

Il est temps de se mettre sérieusement, très sérieusement au Javscript.

Très prometteur…

Update (2010-03-05)

mongodb

Attention, dans mon code, si le serveur mongodb (c’est à dire « mongob ») n’est pas démarré avant de démarrer le serveur node, aucune requête ne sera servie (loade à l’infini)… Vous êtes prévenus maintenant…

Lesscss

Pour ajouter le support de lesscss, il suffit d’ajouter la ligne suivante dans app.configure():

app.configure(function(){
    //...
    //activate less compiler
    app.use(express.compiler({ src: pub, enable: ['less'] }));
    //...
});

Ensuite, il vous suffit de mettre dans public/ vos fichiers less (exemple: main.less). Dans vos templates, il faut continuer à mettre des fichiers css (exemple: main.css), express (ou node) va les compiler automatiquement et créer une version statique css dans public/.

Par contre, il faut 2 requêtes avant que le fichier less soit compilé en css: la première retourne un 404, la 2ème est ok. Donc attention lors du développement.

27. février 2011 par Saad Tazi
Catégories: programmation | Tags: , , , | 2 commentaires

(2) commentaires

  1. Sympa ton article,

    tu pourrais nous dire qu’elles sont les librairies node fonctionnant à la fois côté client et côté serveur stp?

    Vincent

  2. Je n’ai malheureusement pas de listes exhaustives, mais en voici quelques unes:
    Jade, un template engine (comme la plupart des template engine)
    require.js: mais je ne suis pas certain que ce soit utilisé du coté node, car il y a déjà un « loader » de module dans node
    underscore.js
    jquery template.
    – jQuery (oui oui, jQuery est dans la liste de npm)
    – … (la liste est très longue)
    Je suis qu’un novice encore, et je ne connais encore vraiment pas toutes les librairies existants (il y en a trop!!), mais l’engin de recherche de npm peut être utile…

Laisser un commentaire

Les champs obligatoires sont indiqués avec *