109 votes

erb, haml ou slim : lequel suggérez-vous ? Et pourquoi ?

Je suis en train d'apprendre Rails et j'ai vu ces moteurs de modèles. Je n'ai aucune expérience avec eux (seulement erb).

Mais comme je suis un débutant, je suis vraiment confus. Lequel suggérez-vous et pourquoi ? Erb, Haml ou Slim ? Dites-moi pourquoi vous préférez l'un plutôt que l'autre. Et si vous avez d'autres recommandations, faites-le nous savoir.

EDIT : Je ne cherche PAS de gagnant ici. Je veux juste connaître votre opinion sur ces derniers, leur syntaxe, leur vitesse d'exécution, etc.

88voto

Bart ten Brinke Points 609

Deux grands avantages à utiliser slim plutôt que haml :

  1. Slim est actuellement environ huit fois plus rapide que Haml.

  2. Slim prend en charge le streaming HTTP, alors que HAML ne le fait pas.

  3. Slim a une syntaxe plus naturelle : a href="foo.html"

68voto

Erez Rabih Points 9166

ERB est surtout utile si vous avez un concepteur de sites Web qui travaille sur du HTML simple et qui ne connaît ni haml ni slim. De cette façon, ils peuvent écrire du HTML et vous pouvez intégrer la logique ruby avec les balises appropriées.

Si vous travaillez à la fois sur la logique HTML et ruby, ou si votre concepteur est prêt à apprendre quelque chose de nouveau (comme HAML), je choisirais HAML. Il est beaucoup plus convivial pour ruby, réduit le nombre de caractères et est beaucoup plus lisible que ERB.

Par exemple (extrait du document officiel Site HAML ) :

Dans ERB, votre vue ressemblera à ceci :

<div id="profile">
  <div class="left column">
    <div id="date"><%= print_date %></div>
    <div id="address"><%= current_user.address %></div>
  </div>
  <div class="right column">
    <div id="email"><%= current_user.email %></div>
    <div id="bio"><%= current_user.bio %></div>
  </div>
</div>

Alors qu'en HAML, cela ressemblera à ceci :

#profile
  .left.column
    #date= print_date
    #address= current_user.address
  .right.column
    #email= current_user.email
    #bio= current_user.bio

Beaucoup plus propre !

En ce qui concerne la différence entre HAML et SLIM, je n'ai jamais vraiment travaillé avec SLIM, mais je suppose que c'est une question de goût - jetez un coup d'œil aux deux syntaxes et décidez de celle qui vous semble la meilleure. Je ne pense pas qu'il y ait un gagnant définitif entre ces deux (HAML/SLIM).

37voto

engineerDave Points 1964

Voici ce que j'ai trouvé en tête.

ERB :

Pour

  • par défaut en dehors de la boîte
  • ne dépend pas des espaces blancs
  • la barrière d'entrée la plus basse (si l'on vient du HTML) car il s'agit de HTML avec du code Ruby saupoudré.
  • la plupart des lexers des IDE le lisent par défaut
  • Le DHH le préfère
  • les anciennes applications l'utilisent probablement encore

Cons

  • plus verbeux
  • Les balises content_for dans les aides et les vues peuvent rapidement devenir incontrôlables.
  • content_for tags rend l'imbrication des balises plus difficile car erb ne renvoie que la dernière ligne du bloc. il faut donc ajouter une chaîne et la renvoyer.

HAML

Pour

  • plus concis. pas de balises de fermeture, s'adapte aux écrans plus petits
  • une structure visuellement plus propre
  • a des aides intégrées (haml_concat, haml_capture) pour utiliser haml dans les méthodes d'aide.
  • enchaînement de classes
  • beaucoup de sucre syntaxique utile comme # pour les divs ou . pour le chaînage de classes, ou :javascript pour les balises JS

Cons

  • dépendante de l'espace blanc, ce qui rend parfois les erreurs difficiles à comprendre.
  • les balises complexes doivent généralement recourir au format "hash". (Bien que je pense réellement que c'est un excellent exemple de flexibilité pour quelqu'un qui débute, cela pourrait être une douleur).
  • ajouté en tant que joyau (encore une fois, il est probablement exagéré de dire que c'est une erreur)
  • les concepteurs pourraient avoir du mal à s'adapter
  • en plus de l'avertissement général sur l'espace blanc... de simples erreurs d'espace blanc, par exemple les tabulations et les espaces pour l'indentation, peuvent causer des erreurs de pages en production que les spécifications/tests normaux ne peuvent pas détecter. Moralité : Attendez-vous à un besoin accru de tests de vues et n'utilisez pas haml pour les vues critiques, à moins que vous ne soyez sûr que vos tests testent le rendu réel de la vue.
  • est plus lent (que erb)
    • Attention : il s'agit de code ruby si la vitesse est un problème bloquant dans votre application il existe des alternatives à ruby, par exemple haskell

22voto

montrealmike Points 3795

La question pour moi se résume à : préférez-vous mettre % avant chaque balise ou | avant chaque nouveau bloc de texte ?

Mince :

 tag(attr= "value")
  | text

Haml :

 %tag{attr: "value"}
   text

Une dernière chose à laquelle il faut faire attention : haml suppose un espace blanc entre les nouvelles lignes ( supprimer les espaces dans haml ) alors que Slim ne suppose aucun espace (Ajouter des espaces dans Slim aquí y aquí )

17voto

EmacsFodder Points 12284

https://github.com/scalp42/hamlerbslim - est un benchmark indépendant qui montre que Slim et Erb sont les gagnants en termes de performance (Slim a tendance à réduire la taille de la sortie HTML également).

Mon opinion personnelle est que, dans l'ensemble, Slim et Haml vous feront gagner du temps (== de l'argent) en termes de maintenance, à condition que des personnes connaissant bien Haml/Slim s'occupent de vos vues.

Si vous n'avez pas ces personnes, Erb est définitivement la voie à suivre, car malgré la meilleure volonté du monde, il y a beaucoup de personnes très bon marché qui peuvent travailler avec HTML/Erb, mais qui trouvent que Haml/Slim est un mystère complet.

Dans le meilleur des cas, formez ces personnes à l'utilisation de Slim ou, au moins, exposez-les à cette technologie, et gardez le nombre de ceux qui "comprennent".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X