Node.js avec Express.js, tout un changement!

Ça y est! J'ai finalement terminé la migration de mon blogue du framework CodeIgniter en PHP à Express.js en Node.js. Ça fait déjà un petit moment que j'avais soulevé mon désir d'effectuer ce changement. Je peux enfin dire que c'est chose faite! Ça n'a pas été une mince chose à faire, mais j'ai réussi à passer à travers les nombreuses étapes!

On m'a demandé à de multiples reprises les facteurs qui motivaient ma volonté de passer de PHP à Node.js. Effectivement, ça fait depuis très longtemps que je programme en PHP et utilise des frameworks comme CodeIgniter ou Laravel (depuis peu). D'un autre côté, l'effervescence entourant Node.js et le JavaScript (dans son ensemble) m'attiraient beaucoup.

Logo de JavaScript

Raisons supportant la migration

Pour ne mentionner que les principales raisons:

  • Diminution du temps de traitement des requêtes HTTP avec Node.js face à PHP avec Apache (benchmarks disponibles ici, ou également par là);
  • Utilisation d'un seul langage pour la logique de l'application (réutilisable pour le backend et le frontend);
  • Découverte d'une nouvelle plateforme de développement, qui évolue très rapidement;
  • Hébergement sur AppFog, pour découvrir et profiter des avantages de l'infonuagique;
  • Modularisation des applications grâce au gestionnaire de paquets NPM.

Bref, si nous comparons à PHP, ça change de beaucoup. Je ne dis pas nécessairement que JavaScript )(Node.js) est meilleur que PHP, loin de là. En faites, chaque langage a ses avantages et ses désavantages. Cependant, l'effervescence autour de JavaScript est très intéressante. On peut noter le développement d'applications Windows 8 en JavaScript, le développement d'extension Chrome, l'utilisation comme langage par défaut de développement de GNOME3 et j'en passe.

Logo de Node.js

Nouvelle structure du site

Actuellement, plusieurs technologies ont été intégrées pour améliorer les performances (mais aussi pour le plaisir!). Pour en énumérer quelques-unes:

Logo d'Amazon Web Services

Quelques trucs appris en cours chemin

  • Les instances gratuites de Heroku se ferment après un certain temps, ce qui fait que la première personne effectuant une requête attend un bon moment;
  • La programmation asynchrone est plus complexe qu'elle en a l'air. C'est un changement complet de votre façon de programmer, de votre vision de la structure d'une application, nécessitant parfois l'utilisation de patrons de conception (aussi connu sous Design Patterns);
  • La documentation (bien que très complète pour certains modules) n'est pas toujours disponible, ce qui peut rendre la tâche plus complexe;
  • Les modules doivent parfois être modifiés pour fonctionner sur Windows (comme pour la compilation adaptée aux environnements Unix et l'utilisation du Carriage Return + Line Feed (CR+LF) sur Windows face au simple Line Feed (LF) sur UNIX);
  • L'utilisation de Express.js avec Jade simplifie énormément la création des vues (layout) de votre application — impossible d'oublier de fermer des balises HTML!

En conclusion

C'était une expérience vraiment très enrichissante. L'exercice intellectuel m'a appris énormément et m'a permis de voir le développement d'applications d'une tout autre façon. Je vous invite à tenter le coup de votre côté :)!