Retour

HAML vs ERB : quel moteur de template choisir pour vos vues Rails ?

Enregistrer
Temps de lecture: 6 min Vues: 44 Niveau: Intermédiaire à Confirmé
environ 2 mois par Franci-lobbie LALANE
HAML vs ERB : quel moteur de template choisir pour vos vues Rails ?
Tags:

🚀 Introduction



Lorsque l'on travaille avec Ruby on Rails, le moteur de templates par défaut est ERB (Embedded Ruby). Il est simple, robuste, et très bien intégré dans l'écosystème Rails. Pourtant, au fil des années, des alternatives ont émergé, avec des promesses alléchantes : code plus lisible, syntaxe plus concise, meilleure productivité. C’est le cas de HAML, très prisé dans certaines équipes pour la clarté de ses vues.
Mais alors, faut-il adopter HAML ? Rester sur ERB ? Ou envisager d’autres options comme Slim ? Cet article propose un comparatif clair, complet et enrichi de retours d'expérience pour vous aider à choisir le moteur de templates le plus adapté à votre projet Rails.
🧵 À noter : Deux discussions riches sur Reddit et celle-ci sur r/rails ont permis de collecter des dizaines d’avis contrastés, vécus concrets, et pistes de réflexion pertinentes. Elles sont citées tout au long de l’article.



📄 ERB vs HAML : présentation


ERB : le standard

ERB (Embedded Ruby) est intégré nativement dans Rails depuis ses débuts. Il permet d’insérer du code Ruby dans du HTML via des balises <% %> (exécution) ou <%= %> (affichage)


<% if user.admin? %>
  <p>Bienvenue, admin <%= user.name %> !</p>
<% end %>

🔹 Avantages :

  • Syntaxe simple et familière pour les dĂ©veloppeurs web
  • FlexibilitĂ© totale sur le HTML
  • Aucune dĂ©pendance externe
  • IntĂ©gration native dans tous les helpers Rails
  • Compatible avec tous les Ă©diteurs et outils front (ex. Tailwind, Hotwire, Stimulus)

🗣️ Ce que dit la communauté :

"ERB parce que c'est du HTML. Pas besoin d’apprendre un nouveau DSL." -- r/rails
"Plus proche du métal. Je n’ai jamais ressenti le besoin d’un autre langage de template." -- BananafestDestiny

HAML : l’alternative concise

HAML (HTML Abstraction Markup Language) adopte une syntaxe inspirée de YAML et Python, où l’indentation définit la structure. Les balises HTML sont remplacées par des préfixes (%, . ou #), rendant le code plus compact.

- if user.admin?
  %p Bienvenue, admin #{user.name} !

🔹 Avantages :

  • Code plus lisible et aĂ©rĂ©
  • Moins de bruit visuel (pas de balises HTML explicites Ă  fermer)
  • Moins d’erreurs de nesting et balises non fermĂ©es
  • Structure visuelle claire facilitant la relecture
  • Très apprĂ©ciĂ© dans des Ă©quipes expĂ©rimentĂ©es ou sur des bases de code legacy

🗣️ Avis partagés :


"Je ne supporte plus les % partout, je suis passé à Slim." -- pupdogg007
"HAML, tout simplement parce que je ne veux plus jamais fermer une balise Ă  la main." -- GozerDestructor
"J'ai utilisé HAML pendant des années avant de revenir à ERB pour sa simplicité." -- Katafrakt




✅ Productivité & lisibilité


HAML est conçu pour être lisible et rapide à écrire. Une fois la syntaxe assimilée, il permet de gagner du temps et de produire des vues plus compactes. En supprimant les balises HTML explicites, il limite les erreurs et rend la structure du document plus visible.
Cependant, cette syntaxe peut perturber certains profils, notamment les intégrateurs HTML/CSS, peu habitués à cette logique ou aux langages basés sur l’indentation.

🔎 En pratique :

  • HAML amĂ©liore la relecture des PRs, surtout dans les gros projets
  • ERB est plus tolĂ©rant et plus proche du HTML natif, facilitant la collaboration avec des profils non Ruby
  • Le copier-coller depuis des ressources HTML (StackOverflow, Tailwind docs…) est beaucoup plus naturel en ERB

đź’¬ Citations Reddit :


"ERB est verbeux, mais je peux y coller du HTML directement sans me poser de questions." -- katafrakt"HAML est génial jusqu’à ce que je doive convertir manuellement un snippet HTML copié sur un site." -- u/[supprimé]


⏱️ Performances

Côté performances, les différences sont modestes, mais notables selon les contextes :

  • ERB compile plus rapidement car intĂ©grĂ© nativement via erubi
  • HAML et Slim utilisent temple, ce qui ajoute une couche de compilation

📊 Benchmarks comparatifs :


⚠️ À noter : certains logs de développement montrent une allocation mémoire plus élevée pour HAML. Mais en mode production, les vues sont compilées et mises en cache. Cet écart devient donc négligeable sauf si vous traitez des milliers de vues dynamiques à la volée.

🧪 Expérience terrain :


"Le nombre d’objets alloués explose avec HAML dans les logs dev, mais en prod, c’est négligeable." — Icy_Mathematician182


🌟 Slim et au-delà

Parmi les alternatives modernes, Slim sort du lot avec sa syntaxe épurée et sa vitesse d’exécution. C’est une évolution naturelle pour ceux qui trouvent HAML encore trop verbeux.

- if user.admin?
  p Bienvenue, admin #{user.name} !

📌 Points forts :

  • Syntaxe ultra minimaliste
  • Parsing très rapide
  • Compatible Tailwind, Turbo et Hotwire

🗣️ Témoignages Reddit :


"Chaque fois que je commence une nouvelle app avec ERB, je finis par revenir Ă  Slim."

"Slim est un HAML raffiné : plus lisible, plus rapide."

"Le parser Slim est frustrant : la moindre erreur d’indentation renvoie une page blanche."


Slim reste un choix excellent si :

  • Votre Ă©quipe est expĂ©rimentĂ©e
  • Vous souhaitez une syntaxe minimaliste
  • Vous utilisez beaucoup de composants et de partials

đź§© En bonus : et les composants ?

Un fil intéressant de la discussion évoque aussi des moteurs de templates 100 % Ruby comme Phlex ou ViewComponent, qui s’éloignent complètement du HTML en faveur d’une DSL purement Ruby.
📚 Ces approches permettent de modéliser les vues comme des objets Ruby testables, modulaires, et hautement réutilisables.

🧠 Extrait de la communauté :

"Phlex est plus rapide qu’ERB. C’est fun, mais pas fait pour tout le monde.""Si je veux écrire du HTML avec des classes Ruby, je fais du markdown ou j’utilise des composants."

🎯 À surveiller de près : Phlex est jeune, mais prometteur pour des projets orientés composants ou des librairies design systems maison.

🔢 Synthèse

🚀 Conclusion


Chaque moteur de template a ses forces et faiblesses. Si vous démarrez un projet Rails ou souhaitez simplifier votre stack : restez sur ERB. Il est standard, bien documenté, et compatible avec tout l'écosystème Rails 7.1.
Mais si vous cherchez une syntaxe plus expressive, que votre équipe maîtrise bien, et que vous voulez des vues ultra lisibles, HAML (ou Slim) peuvent être d’excellentes alternatives.
👀 Et si vous cherchez une rupture de paradigme, les moteurs comme Phlex ou ViewComponent offrent une approche entièrement Ruby et orientée composants.

💬 En résumé :

  • ERB : simple, fiable, universel
  • HAML : lisible, Ă©lĂ©gant, adaptĂ© aux gros projets
  • Slim : minimaliste, rapide, pour les amoureux de la concision


💡 Mon conseil : testez les trois sur un même template et comparez la lisibilité, la maintenance, et la productivité dans votre contexte.

 Happy coding ! 



Laissez un commentaire

Se connecterpour laisser un commentaire.