ruby-on-rails - rails - slim gem
erb, haml o slim: ¿cuál sugieres? ¿Y por qué? (5)
De la parte superior de mi cabeza, esto es lo que se me ocurrió
ERB :
Pros
- por defecto fuera de la caja
- no depende del espacio en blanco
- la barrera de entrada más baja (si viene de HTML) ya que su código HTML con Ruby está salpicado en
- la mayoría de los lexers de IDE lo leen por defecto
- DHH lo prefiere
- las aplicaciones heredadas probablemente todavía lo estén usando
Contras
- más detallado
- content_for tags en helpers y views pueden salir de control rápidamente
- content_for tags hace que las etiquetas de anidamiento sean más difíciles ya que erb solo devuelve la última línea del bloque. por lo tanto, debe agregar a una cadena y luego devolverla.
HAML
Pros
- más conciso. sin etiquetas de cierre, se adapta a pantallas más pequeñas
- estructura visualmente más limpia
- ha incorporado ayudantes (haml_concat, haml_capture) para utilizar haml en los métodos auxiliares
- encadenamiento de clase
- mucha azúcar sintáctica útil como # para divs o. para encadenamiento de clase, o: javascript para etiquetas JS
Contras
- dependiente del espacio en blanco que hace que algunos errores difíciles de resolver 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).
- agregado como una gema (de nuevo, probablemente un tramo para poner esto como una estafa)
- los diseñadores pueden tener algunos problemas para ajustar
- además de la advertencia general de espacio en blanco ... simples errores de espacios en blanco, por ejemplo. las pestañas y los espacios para la sangría pueden hacer que las páginas se equivoquen en la producción, que las especificaciones / pruebas normales no captarán. Moral: 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 hablamos si la velocidad es un problema de bloqueo en su aplicación. Hay alternativas al rubí, por ejemplo, Haskell.
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, dígale a su razón por preferir uno sobre los demás. Y si tiene alguna otra recomendación, háganos saber.
EDITAR: NO estoy buscando un ganador aquí. Solo quiero escuchar sus opiniones sobre ellos, su sintaxis, la velocidad de ejecución, etc.
Dos grandes ventajas de usar slim over haml:
Slim es actualmente unas ocho veces más rápido que haml.
Slim admite la transmisión HTTP, mientras que HAML no.
Slim tiene una sintaxis más natural:
a href="foo.html"
ERB es bueno, principalmente si tienes un diseñador web que trabajará en HTML simple y no conoce ni haml o slim. De esta forma puede escribir HTML y 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 elegiría HAML. Es mucho más amigable con el rubí, reduce el número de caracteres por mucho y es mucho más legible que el ERB.
Por ejemplo (tomado del sitio oficial de HAML ):
En ERB su 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é realmente con SLIM pero supongo que es una cuestión de gusto, 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).
La pregunta para mí se reduce a si prefieres poner %
antes de cada etiqueta o |
antes de cada nuevo bloque de texto?
Delgado:
tag(attr= "value")
| text
Haml:
%tag{attr: "value"}
text
Una cosa más a tener en cuenta: haml supone un espacio en blanco entre las nuevas líneas ( elimina el espacio en blanco en haml ) mientras que Slim asume que no hay espacio (Agrega espacio en blanco here y here )
https://github.com/scalp42/hamlerbslim - es un punto de referencia independiente que muestra a Slim y Erb como ganadores, en cuanto al rendimiento (Slim tiende a reducir también el tamaño de la salida HTML).
Mi opinión personal es que, en general, Slim y Haml le ahorrarán tiempo (== dinero) en términos de mantenimiento, siempre que tenga personas conocedoras de Haml / Slim que se encarguen de sus puntos de vista.
Si no tienes esas personas, Erb es definitivamente el camino a seguir, porque a pesar de la mejor voluntad del mundo, hay muchas personas muy económicas disponibles que pueden trabajar con HTML / Erb, pero encuentran Haml / Slim un completo misterio.
Lo mejor de todo, capacitar a estas personas para usar Slim o al menos exponerlas, y mantener los números de los que "lo obtienen".