Aller au contenu

HTMX, pour un développement web simplifié

HTMX, le HTML boosté, vous permet de créer des applications web plus interactives et réactives sans complexité. Des requêtes AJAX aux WebSockets, le tout avec juste du HTML! Prenez une tasse de thé et laissez HTMX vous replonger dans une version simplifiée de vos projets web.

Photo by Florian Olivo / Unsplash

Vous avez peut-être la chance d'avoir connu l'âge des pages web statiques sans interactions puis l'avènement de Flash et jQuery pour finir aujourd'hui à l'ère des frameworks tels que React, Angular, Vue.js. Et si on pouvait revenir à quelque chose de plus simple ? C'est la promesse de HTMX. Allez, installez-vous et regardons ça de plus près.

HTMX, c'est quoi ?

HTMX est une bibliothèque JavaScript qui permet de faire des mises à jour partielles du contenu de votre page en utilisant directement le HTML. Pas besoin de JSX, de modèles complexes ou de Virtual DOM.

HTMX permet d'effectuer des appels API, d'utiliser les Server Sent Events ou même les WebSockets en offrant la possibilité de rendre les applications web réactives et interactives.

Comment HTMX réalise ce miracle ?

Une fois injectée dans votre page, HTMX va inspecter l'ensemble du DOM à la recherche d'attributs hx-* et remplacer le contenu ou effectuer des actions comme mettre en place des listeners ou émettre des appels API.

Comment démarrer avec HTMX ?

Vous devrez injecter la librairie dans votre page :

<script src="https://unpkg.com/htmx.org"></script>

Puis vous pouvez par exemple émettre votre première requête API comme suit :

<div
     hx-get="https://dummyjson.com/todos/1"
     hx-trigger="every 1s"
     hx-swap="outerHTML">
    <p>Attente de la donnée...</p>
</div>

Voici le rendu au chargement de la page :

et après chaque requête HTTP le contenu de la div est remplacé :

Pour aller plus loin

HTMX propose quelques extensions comme :

  • json-enc: pour encoder le corps d'une requête au format JSON à la place du classique x-www-form-urlencoded
  • client-side-templates: qui permet d'utiliser Mustache, Handlebars ou encore Nunjucks pour créer des templates.
  • debug: pour debugger un élément HTMX en particulier.

Voici un exemple qui met en oeuvre HTMX avec le moteur de templating Mustache :

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="https://unpkg.com/htmx.org"></script>
    <script src="https://unpkg.com/htmx.org/dist/ext/client-side-templates.js"></script>
    <script src="https://unpkg.com/mustache@latest"></script>
  </head>
  <body>
    <div hx-boost hx-ext="client-side-templates">
      <div
        hx-get="https://dummyjson.com/posts"
        hx-trigger="load"
        mustache-template="todo-list"
      >
        <p>Loading posts...</p>
      </div>
      <script id="todo-list" type="x-tmpl-mustache">
        {{#posts}}
            <h4>{{title}}</h4>
            <p>{{body}}</p>
            {{#tags}}
                <i>#{{.}}</i>
            {{/tags}}
            <hr/>
        {{/posts}}
      </script>
    </div>
  </body>
</html>

Êtes-vous prêt à revenir au minimalisme ?

HTMX nous rappelle l'époque où le développement web était un peu plus simple. En plus de diminuer la complexité, HTMX n'a que peu d'impact sur la performance web de votre application. Et si la prochaine fois que vous n'aurez qu'à afficher des données, vous laissiez sa chance à HTMX ?

Dernier