Thymeleaf: The Natural Template.



Cuando se inicia un proyecto de una aplicación web, empresarial o standalone, una de las primeras actividades que se realiza en acuerdo con el cliente es presentarle un prototipo de lo que será la capa de presentación o en otras palabras las páginas y principales componentes visuales que verá el usuario del sistema. Podemos encontrar una gama de alternativas para hacerlo a través de herramientas como Enterprise Architect, Pencil project, Axure RP y otros.

Sin embargo muchas de ellas son estáticas y el esfuerzo invertido tanto por el diseñador gráfico como el front-end developer se pierde al no quedar funcionalmente apta para ser integrada a la capa de presentación del proyecto. En muchas compañías a este proceso adicional se le llama corte del diseño en donde el front-end developer toma el diseño y lo convierte a fuentes (css, js, html, images, recursos en general).

Por otro lado si estamos pensando en crear un proyecto standalone la capa de presentación debe ser construida usando una tecnología que corra sobre la JVM al no tener incluido un servidor de aplicaciones dentro de nuestro espectro.

Bajo estos dos tipos de escenario y otros más tenemos una nueva alternativa de tecnología llamada Thymeleaf.

Thymeleaf es una librería Java. Es un proyecto open source de un template Engine Framework.

En palabras simples, Thymeleaf  permite construir toda la capa de presentación usando tecnología XHTML ó HTML5 sin necesidad de usar un servidor de aplicaciones web, únicamente necesitas una máquina virtual JVM para compilar, depurar, probar y desplegar. Es una alternativa a JSP  y otros proyectos de desarrollo ágil como Velocity Engine. Las ventajas más importantes de Thymeleaf  son:

- Le permite tanto a el Diseñador gráfico como a el Front-end developer trabajar en el mismo archivo de plantilla del proyecto y reducir el esfuerzo necesario para transformar un prototipo estático en un archivo de plantilla de trabajo (a esto se le conoce como Natural Templating).

- Permite la integración con Spring MVC (está cualidad definitivamente hace la diferencia).

Otras cualidades son:

  • Soporte de lógica en las plantillas (condicionales, iteraciones, transformaciones).
  • Optimizado para entornos web pero puede trabajar standalone.
  • Avanzado lenguaje de evaluación (OGNL or Spring Expression Language).
  • Integración con Spring Web Flow y Spring MVC.
  • Completo soporte para internacionalización de la aplicación.
  • Soporta patrones de composiciones de vistas (nativas con fragmentos, Tiles).
  • Sofisticado soporte a template caching.
  • Trabaja con Dandelion-Datatables.

No es recomendable usarla en proyectos con Big Data si no se cuenta con una solución que incluya un servidor de aplicaciones. Está restricción es básicamente por los niveles de exigencia en memoria y rendimiento que implican el trabajar soluciones para manipular Big Data, más no una limitación de Thymeleaf.

El concepto básico es crear un TemplateResolver  para cargar las plantillas (templates) y un TempleateEngine para hacer el actual procesamiento (integración de las plantillas con el contexto dado).

La documentación completa y la descripción de la arquitectura la encuentra el el sitio oficial del proyecto Thymeleaf

También les recomiendo revisar el siguiente artículo de la comunidad Spring Spring MVC: from JSP and Tiles to Thymeleaf

Y este otro excelente artículo sobre configuración How to Spring Boot and Thymeleaf with Maven.

Take care!
Thanks for your comment