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.
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).
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:
Slim es actualmente unas ocho veces más rápido que haml.
-
Slim soporta streaming HTTP, mientras que HAML no.
Slim tiene una sintaxis más natural:
a href="foo.html"
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
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í)
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"."
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