Adiós HTML, bienvenido Haml

Actualmente me encuentro comenzando varios proyectos pequeños basados en diferentes plataformas y/o frameworks (Django, Ruby on Rails, PHP), con lo cual se me “armó” un lío interesante a la hora de recordar las sintaxis que utiliza cada framework/lenguaje para generar el HTML final. RoR usa por defecto ERB, Django tiene su lenguaje para templates y con PHP me alcanzaba con la forma básica de embeberlo en HTML. Con la escasa memoria que tengo, se podrán imaginar que iba a terminar escribiendo cualquier cosa.

Por suerte, y gracias al dios de los lenguajes de programación (?), @eljuanchosf llegó para salvarme con Haml en la mano.

Haml fue ideado para acelerar los tiempos de desarrollo y a la vez lograr un lenguaje de markup agradable a la vista. No por nada de su idea principal es:

Markup should be beautiful.

Luego de ver un ejemplo, se puede comprobar la sencillez y “limpieza” que este lenguaje le puede dar a nuestros templates. El ejemplo siguiente está extraído del tutorial que se puede ver en la página principal de Haml.

ERB

<div id='content'>
  <div class='left column'>
    <h2>Welcome to our site!</h2>
    <p><%= print_information %></p>
  </div>
  <div>
    <%= render :partial => "sidebar" %>
  </div>
</div>

Haml

#content
  .left.column
    %h2 Welcome to our site!
    %p= print_information
  .right.column
    = render :partial => "sidebar"
Si bien en principio (y sobre todo para aquellos que no conozcan ERB) el código pueda parecer un tanto extraño, una mirada más detenida nos demuestra que el increíble ahorro de código y tiempo que este lenguaje de markup nos puede brindar. Además, una vez que nos acostumbramos, el código de Haml es mucho más agradable y legible que el HTML puro, y ni hablar cuando se trata de HTML + algún-lenguaje-de-template.

Pero el hecho de que me gustara tanto Haml traía consigo un nuevo problema; empecé a “odiar” el lenguaje de templates de Django y PHP embebido en HTML (en realidad a éste último ya lo odiaba). Así que puse manos al teclado y busqué implementaciones de Haml para estos lenguajes, encontrando resultados mucho más rápido y fácil de lo que esperaba.

Para poder tener un lenguaje similar a Haml en Django, podemos utilizar GHRML, el cual está basado en Genshi Markup Templates. En el caso de PHP, existe un parser llamado phphaml, el cual nos permite escribir los templates casi de la misma forma que lo hacemos en el Haml original. Pueden ver ejemplos de estos en sus respectivas páginas.

¿Conocen otras implementaciones de Haml para Django o PHP? ¿Son mejores que las encontradas por mi? ¡No duden en dejar sus comentarios recomendándolas!

Tags: , , , , , , , , , , , ,

This entry was posted on Monday, November 16th, 2009 at 3:53 pm and is filed under Desarrollo Web, Django, Programación, Python, Tutoriales. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

8 Responses to “Adiós HTML, bienvenido Haml”

sAfOrAs November 17th, 2009 at 5:19 am

aún tengo el pensamiento un poco estructurado, y creo k estoy acostumbrado a siempre cerrar una estructura, siempre poner un fi para un if, siempre un } para un {, siempre un /> para un <, siempre un ; al final, siempre cierro loq ue abro, siempre termino lo que empiezo .. es esta última casi siempre :)

saludos & bytes!!

The Doctor November 17th, 2009 at 7:00 am

Yo creo que esa costumbre la generan lenguajes como Java, C, PHP, HTML… Empezá a programar (por ejemplo) en Python un tiempo, y vas a ver qué rápido te podés olvidar de todas esas horribles llaves, puntos y comas, signos de mayor o menor y “ends”. Con Haml pasa lo mismo, te acostumbrás a indentar (como en Python) en vez de “abrir y cerrar” y de repente te das cuenta de que *siempre* tendrías que haber programado así.

Por lo menos es lo que a mí me pasó ^^

Saludos!

Juan Pablo November 17th, 2009 at 9:10 am

Particularmente, encontré en haml una combinación que lo hacía irresistible para mí: una sintaxis clarísima, código ordenado y la no-necesidad de aprender un nuevo lenguaje de templating, simplemente, conocer algunos tags nuevos. Lo admito, no me gusta para nada la parte de UI. Prefiero toda la vida manejar el código que hace detrás todo lo necesario para que la vista funcione… y haml me vino a ayudar muchísimo en ese aspecto. HTML queda obsoleto al costado de esta maravilla. Ruby (y sobre todo en combinación con Rails) tien una cantidad de lenguajes de template para elegir (ver http://www.hokstad.com/mini-reviews-of-19-ruby-template-engines.html), pero haml es menos que un lenguaje de template, y un poquito más que un lengujae de markup. Winner total como se decía en mi época. Salutti!!

José November 17th, 2009 at 10:58 pm

Es muy interesante tu blog, pero por favor los colores que tiene me dificulta mucho leerlo.
Podrás hacer algo??
gracias
José

The Doctor November 17th, 2009 at 11:07 pm

José: Me alegra que te guste el blog y veré que puedo hacer con los colores, pero desde mi punto de vista es muco más fácil de leer una letra clara sobre fondo oscuro que lo contrario. No te olvides que suscribiéndote por medio de RSS siempre podés leerlo desde tu lector de feeds (y también podés suscribirte por mail =) )

Espero seguir leyéndote por acá,

Saludos! =)

Jose Ayerdis November 21st, 2009 at 1:53 am

Te doy un 100 al blog y al post sigue asi. (Apuntado a mis Feed favoritos)

The Doctor November 24th, 2009 at 12:09 am

Me alegro de que te haya gustado José, y bienvenido! =)

Le Funes December 3rd, 2009 at 8:17 am

A pesar de no programar mucho en Python, siempre me gusto mucho la identación que tiene por lo claro que queda el código. Creo que Haml capta esa esencia.

Gracias por el dato
Saludos

Leave a Reply