erb, haml o slim: ¿cuál sugieres? ¿Y por qué? [cerrado]


Estoy aprendiendo Rails y he visto estos motores de plantillas. No tengo experiencia con ellos (solo erb).

Pero como soy un principiante, estoy realmente confundido. ¿Cuál sugieres y por qué? ¿Erb, Haml o Slim? Por favor, diga su razón para preferir uno sobre los otros. Y si tiene alguna otra recomendación, por favor háganoslo saber.

EDITAR: NO estoy buscando un ganador aquí. Solo quiero escuchar sus opiniones sobre ellos, su sintaxis, velocidad de ejecución, y así sucesivamente.

Author: Yu Hao, 2012-07-09

5 answers

ERB es bueno principalmente si usted tiene un diseñador web que va a trabajar en HTML llano y no sabe ni haml o slim. De esta manera puede escribir HTML y usted puede incrustar la lógica de ruby con las etiquetas adecuadas.

Si trabajas tanto en HTML como en ruby logic, o tu diseñador está listo para aprender algo nuevo (como HAML), yo iría por HAML. Es mucho más amigable con ruby, reduce el conteo de caracteres mucho y mucho más legible que ERB.

Por ejemplo (tomado del oficial HAML sitio):

En ERB tu vista se verá así:

<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>

Mientras que en HAML se verá así:

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

Mucho más limpio!

En cuanto a la diferencia entre HAML y SLIM, nunca trabajé con SLIM, pero supongo que es una cuestión de gustos, eche un vistazo a ambas sintaxis y decida qué se ve mejor en sus ojos. No creo que haya un ganador definitivo entre esos dos (HAML/SLIM).

 63
Author: Erez Rabih,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-09 07:25:46

Dos grandes ventajas de usar slim sobre haml:

  1. Slim es actualmente unas ocho veces más rápido que haml.

  2. Slim soporta streaming HTTP, mientras que HAML no.

  3. Slim tiene una sintaxis más natural: a href="foo.html"

 79
Author: Bart ten Brinke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-20 14:19:45

De la parte superior de mi cabeza esto es lo que se me ocurrió

ERB :

Pros

  • predeterminado fuera de la caja
  • no depende del espacio en blanco
  • la barrera de entrada más baja (si viene de HTML) como su HTML con código Ruby rociado en
  • la mayoría de los lexers del IDE lo leen por defecto
  • DHH lo prefiere
  • las aplicaciones heredadas probablemente todavía lo estén usando

Cons

  • más verbose
  • content_for las etiquetas en ayudantes y vistas pueden salirse de control rápidamente
  • las etiquetas content_for hacen que las etiquetas anidadas sean más difíciles, ya que erb solo devuelve la última línea del bloque. así que tienes que anexar a una cadena y luego devolver eso.

HAML

Pros

  • más conciso. sin etiquetas de cierre, cabe en pantallas más pequeñas
  • estructura visualmente más limpia
  • ha incorporado ayudantes (haml_concat, haml_capture) para utilizar haml en métodos auxiliares
  • encadenamiento de clase
  • un montón de azúcar sintáctica útil como # para divs o. para encadenamiento de clases, o :javascript para etiquetas JS

Cons

  • depende de los espacios en blanco lo que hace que algunos errores difíciles de averiguar a veces
  • las etiquetas complejas generalmente necesitan recurrir al formato "hash". (Aunque en realidad creo que este es un gran ejemplo de flexibilidad para alguien que comienza podría ser un dolor.)
  • añadido como gema (de nuevo probablemente un tramo para poner esto como una estafa)
  • los diseñadores podrían tener algunos problemas para ajustar
  • además de la advertencia general de espacios en blanco... errores de espacios en blanco simples, por ejemplo. las pestañas y los espacios para la sangría pueden hacer que las páginas se erren en la producción que las especificaciones/pruebas normales no atraparán. Moraleja: Espere una mayor necesidad de pruebas de vista y posiblemente no use haml para vistas de misión crítica, a menos que esté seguro de que sus pruebas están probando la representación real de la vista.
  • es más lento (que erb)
    • advertencia: este es el código ruby del que estamos hablando si la velocidad es un problema de bloqueo en su aplicación, hay alternativas a ruby, por ejemplo, haskell
 32
Author: engineerDave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-30 17:09:52

La pregunta para mí se reduce a ¿preferirías poner % antes de cada etiqueta o | antes de cada nuevo bloque de texto?

Slim:

 tag(attr= "value")
  | text

Haml:

 %tag{attr: "value"}
   text

Una cosa más a tener en cuenta: haml asume un espacio en blanco entre nuevas líneas (eliminar espacios en blanco en haml) mientras que slim asume que no hay espacio (Agregar espacios en blanco en Slim aquí y aquí)

 17
Author: montrealmike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-28 05:02:03

Https://github.com/scalp42/hamlerbslim - es un punto de referencia independiente que muestra Slim y Erb como ganadores, en cuanto al rendimiento (slim tiende a reducir el tamaño de salida HTML también.)

Mi opinión personal es que, en general, Slim y Haml le ahorrará tiempo (== dinero) en términos de mantenimiento, siempre que tenga personas conocedoras de Haml/Slim que cuiden de sus puntos de vista.

Si no tienes a esas personas, Erb es definitivamente el camino a seguir, porque a pesar de la mejor voluntad del mundo, hay un montón de gente muy barata disponible que puede trabajar con HTML/Erb, pero encontrar Haml / Slim un misterio completo.

Lo mejor de todo es entrenar a estas personas para que usen Slim o al menos exponerlos a él, y mantener los números de los que "lo entienden"."

 15
Author: ocodo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-02 23:26:46