Arrivée de HTMX dans Drupal 11
L'équipe responsable de développer le core de Drupal migrera les fonctionnalités AJAX qui propulsent Drupal par des fonctionnalités similaires en HTMX, une librairie Javascript qui permet d'accéder à des fonctionnalités nécessitant traditionnellement beaucoup de JavaScript directement dans le code HTML.
Encore une fois, un choix judicieux et à contre-courant (en opposition avec la mode React actuelle) qui permettra à Drupal de rayonner par sa solidité et ses choix optimaux de dépendances.
Cela se reflétera principalement dans les fonctionnalités des formulaires d’administration pour le chargement de contenus AJAX :
- Téléchargement d'images
- Ajouts d'items de paragraphes
- Tout autre champ multiple
À quel type de code peut-on s'attendre ?
Une fois rendu, le code HTML de la page ressemblera à l'exemple suivant :
<button data-hx-get="/htmx/blocks/add/announce_block"
data-hx-target="#drupal-off-canvas-wrapper"
data-hx-select="#drupal-off-canvas-wrapper"
data-hx-swap="outerHTML ignoreTitle:true" class="button">
Add
</button>
Un exemple plus complet est disponible sur le site de Dries.
Qu'est-ce qui explique ce choix ?
Avec HTMX, le code requis pour arriver au même résultat est beaucoup plus léger, et plus explicite : le comportement est défini dans les attributs HTML directement.
Pourquoi ne pas utiliser React ou Vue.js
L'équipe a choisi cette librairie plutôt que Vue.js ou React pour sa simplicité : c’est l’outil qui parvient le mieux à répondre aux besoins sans pour autant ajouter de fonctionnalités superflues. Ça reste donc très léger, autant pour le poids que pour la compréhension.
htmx is small (~14k min.gz’d), dependency-free, extendable, IE11 compatible & has reduced code base sizes by 67% when compared with react
Qu'est-ce que ça va changer pour notre équipe ?
Nous allons pouvoir utiliser cette nouvelle méthode pour nos formulaires d'administrations, comme nos formulaires de configuration globale de site (SiteSettingsConfig).
Par contre, pour nos sites (front-end), je ne crois pas que c'est quelque chose que nous allons utiliser. Les attentes des clients sont souvent précises pour les animations et les comportements, et l'approche Javascript/AJAX restera sans doute la plus flexible pour un moment encore.