vendredi 20 juillet 2012

Express pour Node.je et Sinatra

Express est un framework MVC pour Node.js.  C'est donc du javascript (ou du coffeescript).



Express revendique clairement sa filiation avec Sinatra pour Ruby.




Et c'est vrai que l'analogie est frappante :


Coté Sinatra :




Au delà de cette simple comparaison, Sinatra et Express appartiennent bien à la même famille des DSL dans le domaine d'application de la couche WEB.

1) Le domaine d'application de Sinatra.


Sinatra permet offre un langage de manipulation de la couche web middleware.  Ruby possède une couche middleware très puissante appelée Rack.


Rack permet de faire le lien entre une requête HTTP  entrante (url, méthode et parametre) et des objets Ruby. Il est possible d'agencer à sa guise la pile de traitement d'une requete WEB.

Sinatra offre un langage permettant de travailler directement avec ces couches.

2) Le domaine d'application d'Express


Express tout comme Sinatra permet de manipuler facilement le middleware pour Node.js appelé 'connect.js'.


Express ne fournit pas directement un DSL comme dans Sinatra. Il permet en revanche de réaliser très facilement pour Node.js des applications WEB en mode MVC.

3) Les deux modes d'utilisation de Sinatra.


Sinatra fonctionne sous deux modes:

Le mode 'classique' 

L'application tient dans un fichier et elle est écrite avec le DSL.


Le mode modulaire.


L'application peut être répartie dans plusieurs fichiers.  Il est possible d'avoir plusieurs applications pour un seul interpréteur Ruby actif. En revanche on ne pourra pas faire appel directement au DSL, il faudra passer par des méthodes.

Aucun mode n'est meilleur que l'autre. C'est vraiment deux usages différents. Dans les deux cas, le développeur pourra intervenir sur l'agencement de la couche middleware.
Dans les deux modes, il est possible et recommandé d'isoler les vues dans des sous-répertoires.


4) Les deux mode d'utilisation d'Express


Express lui aussi propose deux usages.

Le mode simple


Comme pour Sinatra, l'application tient dans un fichier et liste les actions à mener pour chaque url.



Ici un exemple en coffeescript.

Le mode MVC


Un appel à la commande express 'mon_appli' génère une arborescente qui ressemble  à celle  d'une grosse application Sinatra.


Par défaut Expres utilise le système de template 'jade' mais il est possible de choisir son moteur des template. Pour ma part , j'utilise 'ejs' qui se rapproche beaucoup de 'erb' pour ruby.

Dans les deux modes, le développeur garde la possibilité de modifier la couche middleware.



En conclusion: Sinatra est a réserver pour les petite applications, après il vaut mieux passer à Rails.

Express, lui prend en charge tout l'aspect serveur WEB (cache , session )  qui n'existe pas en l'état dans Nodes.js  Express sert souvent de base pour d'autres frameworks.
je prépare une série de vidéos sur le thème d'express, rendez vous sur twitter.





 

Aucun commentaire: