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.
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
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…