Ç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.
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, là 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.
Routage des requêtes via CloudFlare, pour profiter de la réplication du contenu dans leurs 23 centres de données à travers le monde, protéger contre les attaques informatiques, diminuer l'utilisation des ressources;
Compression de la grande majorité des fichiers envoyés (HTML, CSS, JavaScript);
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é :)!
∎