sintax rails index ruby-on-rails haml erb slim-lang

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:

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

  2. Slim admite la transmisión HTTP, mientras que HAML no.

  3. 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".