Blog image
  12/04/2014
  node.js

Quoi de neuf avec Express 4.0 ?

Express est un des packets les plus connu de Node.js. C’est un framework minimaliste qui permet de construire des applications web. Cet article présente les nouveautés de la version 4.0 qui est disponible depuis cette semaine.

Cette nouvelle version d’Express apporte quelques changements au niveau de l’API et des méthodes à utiliser. Un travail important à aussi été fait sur les performances.

Middleware

Une des grosses nouveautés de la version 4.0 est que connect n’est plus une dépendance. Du coup, la plus part des paquets qui étaient incluis dans Express ne le sont plus. On trouvait dans cette liste les outils comme bodyParser, cookieParser ou encore session. Il faudra maintenant inclure manuellement ces composants.

Ce changement permet que ces modules soient mis à jour plus facilement et surtout indépendamment d’Express.

Disparition de app.configure()

Dans les projets utilisant Express 3.0, il était possible d’utiliser la méthode app.configure() pour définir une configuration par environnement :

//Express 3.0
app.configure('development', function() {
   // configuration
});

La façon de déclarer la configuration du projet a changé. La méthode app.configure() n’existe plus, il faudra maintenant utiliser des if ou un module externe :

//Express 4.0
var env = process.env.NODE_ENV || 'development';
if ('development' ===
 env) {
   // configuration
}
Nouvelle API de routage

La déclaration des routes a aussi été modifié. Dans Express 3.0, il fallait utiliser app.get et app.post de la façon suivante :

//Express 3.0
app.get('/utilisateurs', function(req, res){});
app.post('/utilisateurs', function(req, res){});

Dans Express 4.0, un nouvelle méthode route() a été ajouté. Elle retourne une instance de Route qu’il est possible d’utiliser pour ajouter les functions de chaque route :

//Express 4.0
app.route('/utilisateurs')
  .get(function(req, res, next) {})
  .post(function(req, res, next) {})

En plus de get() et post(), il est possible d’utiliser la méthode all qui sera appelé pour les méthodes GET et POST.

//Express 4.0
app.route('/utilisateurs')
  .all(function(req, res, next) {
    // ce code sera exécute pour tous les appels
  })
  .get(function(req, res, next) {})
  .post(function(req, res, next) {})

On peut d’ailleurs utiliser Route pour faire un routeur indépendant :

//Création des Routes
var utilisateurs = express.Route();
utilisateurs.get('/nouveaux',function(req, res, next) {});
utilisateurs.get('/admins',function(req, res, next) {});

//Utilisation du routeur
app.use('/utilisateurs', utilisateurs);

Dans cet exemple, on peut utiliser les routes /utilisateurs/nouveaux et /utilisateurs/admins pour accéder aux fonctions qui ont été définies dans les routes.

express.createServer()

Il n’était plus recommandé d’utiliser cette méthode depuis un moment. Elle a définitivement disparu et il faudrait maintenant utiliser express().

Performances

Il y a pour l’instant peut de projet qui utilisent la nouvelle version d’Express en production. La société SSP à fait le test sur leurs serveurs et ils expliquent dans un article que depuis le passage à Express 4.0, les temps de réponses ont baissés de 20% et que la consommation de mémoire sur les serveurs a diminué de 10%.

En conclusion

Le passage à Express 4.0 est relativement simple. Il est donc intéressant de migrer rien que pour les gains de performance apporté par cette nouvelle version.

Et vous, avez-vous migré vos projets en version 4.0 ?


comments powered by Disqus
Avatar image
Avatar image

Thomas Brelet

Je suis développeur iOS Freelance. J'accompagne des startups dans la réalisation de leurs applications mobiles. Si vous voulez en savoir plus, c'est par ici