Un CMS en JavaScript sur le serveur

Remplacer PHP par JavaScript, 2ème partie: Faire renaître Wordpress en JavaScript avec pour exemple le CMS Ghost.

J'avais terminé la première partie, JavaScript sur le serveur à la place de PHP, par la conclusion que le modèle LAMP ne convenait pas aux applications modernes, notamment par défaut d'un mode offline, impossible avec PHP. Wordpress en est le meilleur exemple. Même si ce CMS à de nombreuses qualités et de nombreux avantages par rapport à ses concurrents, notamment celui de la simplicité d'utilisation et de personnalisation, il convient de moins en moins aux plateformes modernes, à cause de sa base LAMP.
Comme je le suggère dans cet article, de nouveaux CMS commencent à apparaître basés sur JavaScript et Node.js. Un exemple avec Ghost. Ce CMS à obtenu une levée de fond conséquente sur KickStarter avec le support de plusieurs compagnies, dont Microsoft qui a investi (on parle de 50000 $) pour favoriser son développement.

Et les termes de la présentation du logiciel s'accordent bien avec mes propres conclusions:

Chez Ghost, nous pensons que l'utilisation de JavaScript non seulement nous donne à accès à des communautés d'esprits brillants en croissance rapide, mais il rend aussi le projet accessible à d'autres communautés qui ne sont pas concernées par les projets PHP, la vieille garde. JavaScript a passé le test de la durée et Ghost, conformément à sa mission, peut travailler étroitement avec les communautés qui font avancer l'innovation sur le Web.

Apparemment une bonne partie des commentaires sur la première partie, et notamment sur Hacker News proviennent de la vieille garde ;)

Reste à démontrer plus précisement en quoi l'utilisation de JavaScript permet de faire un CMS plus moderne.

Tableau de bord personnel

Wordpress utilise des widgets pour permettre au webmaster de réaliser l'interface du site, et il en est de même avec le CMS JavaScript. Mais Ghost va plus loin: on peut construire aussi son propre tableau de bord en ajoutant et déplaçant des widgets...

Le tableau de bord est construit comme une application Web ou pour mobile: il tient dans une seule page tandis que Wordpress utilise le principe hérité des applications de bureau avec une multitudes d'onglet dédiés chacun à une des fonctions de gestion du site.

Edition sans contraintes

La création d'article se fait sur deux panels: à gauche, le "code source", qui n'est plus en HTML mais en markdown. Et à droite le contenu tel que le voit le lecteur.

Ce choix se justifie par la volonté de construire un CMS simple, limité au blogging, ce qu'était Wordpress à l'origine. Cela réduit les problèmes de formatage. Il y a souvent une difficulté à obtenir ce que l'on veut avec l'éditeur de Wordpress (TinyMCE), car il à ses propres règles et il supprime les balises que l'on insère quand cela ne lui convient pas. C'est quelque chose qui est inhérent à ces éditeurs en ligne qui n'ont pas les capacités qu'à DreamWeaver de synchronisation entre le source et l'affichage. Le markdown a des limitations, mais sa simplicité permet d'obtenir cette synchronisation et de réaliser un billet en étant plus à l'aise.

L'accès aux articles antérieurs et à leur édition est aussi facilité dans Ghost par une double fenêtre. On déroule la liste dans une fenêtre et on édite l'article sélectionné. Il est facile de passer de l'un à l'autre. Wordpress du fait de sa conception ancienne, requiert de passer d'une page à l'autre pour les mêmes opérations ce qui rend l'édition plutôt laborieuse.

Thèmes et plugins sans templates

Réaliser un thème en JavaScript et HTML semble plus facile qu'avec HTML et PHP, et les plugins plus encore. Un thème ici est une page HTML et CSS, avec des champs dédiés aux différents contenus du site. Un plugin est un script JavaScript que l'on charge dans la page ou que l'on ajoute en tant que module à Node.js.

Il n'y a pas de raison de rencontrer ces problèmes de compatibilité de plugins à la fois avec les nouvelles versions du logiciel et avec les autres plugins, qui remplissent les forums Wordpress de complaintes. Dès lors que le logiciel a une conception moderne basée sur WebSocket, comme Advanced Explorer sur ce site, les différents modules peuvent communiquer par messages et les mêmes commandes recevant les même réponses, les différents modules peuvent évoluer indépendamment sans inconvénient.

Fonctionnant sur mobiles

L'avantage de JavaScript et Node.js est de permettre à Ghost de fonctionner sur tous les appareils en tant qu'application car il est plus rapide et plus léger que Wordpress. L'auteur a accès au tableau de bord sur une tablette ou un mobile.
Il est évident qu'en supprimant ne serait-ce que les 1300 KO de l'éditeur TinyMCE et les 500 KO de jQuery, on accélère notablement le chargement du tableau de bord! En fait le répertoire JavaScript de base de Wordpress 2.9 contient plus de 3 megas de code.

Pour accéder au tableau de bord sur un mobile, il faudrait au moins le mode offline et stocker tout le code nécessaire localement. Mais ce n'est pas possible avec un logiciel écrit en PHP.

Tous les hébergements mutualisés ne supportent pas Node.js. Mais il en existe tel notamment Gandi. Et il y a le cloud.

Voir aussi:

Wordpress va passer de PHP à JavaScript!