Para empezar,
¿Cuál es el objetivo de un Template Engine?. Lo voy a responder directamente desde la
wikipedia:
"A template processor (also known as a template engine or a template parser) is software or a software component that is designed to combine one or more templates with a data model to produce one or more result documents. For purposes of this article, a result document is any kind of formatted output, including documents, web pages, or source code, either in whole or in fragments."
Esta definición es hermosa, y de hecho, acertadísima. El problema de los templates es la forma en la que nos los quieren "
vender", nos dicen que los diseñadores de sitios web pueden trabajar en paralelo con los programadores y evitar que los diseñadores modifiquen o borren código que tanto esfuerzo costó al programador escribir. Pues yo digo que es una
MENTIRA.
Ojo, no reniego de la eficacia de los Templates y de como nos ayudan a modificar nuestras páginas web muchísimo más rápido, de hecho,
Velocity y
FreeMaker realizan extraordinarios trabajos y son muy útiles.
Pero absolutamente ninguno soluciona la (muchas veces abismal) distancia entre diseñador/programador. De hecho, les propongo que elijan uno y lean apenas el primer ejemplo del "user guide". Si están trabajando con Struts, seguramente les conviene empezar con
Tiles.
Todos proponen lo mismo, aprender un nuevo lenguaje que resulta más rápido al diseñador aprender. Claro, en vez de enseñarle al diseñador a hacer
<%if(condición){tareas}%>, podemos enseñarle
<#if condición>tareas<#if>.
Solución propuesta: No tratemos de que el diseñador arme una página web y de que por arte de magia nunca existan más problemas con el programador. Tampoco intentaría que un diseñador aprendiera un lenguaje de programación (Java, PHP, Python o cualquiera de templates), francamente, no creo que pueda funcionar. Pero claro, todo depende del diseñador...
Tampoco digo que no se deba usar alguna herramienta de templates, al contrario, estoy convencido de que nos ayuda a la hora de modificar la diagramación o características de nuestro sitio (como por ejemplo, la internacionalización). Y, mi querido amigo/a,
le estoy pasando más responsabilidad al programador.
Por mi parte estoy muy contento con
Tiles de Struts, me gusta porque es bastante básico, no necesito más de lo que
Tiles/JSTL/EL me ofrece para trabajar. Además podemos armar una buena arquitectura para no reinventar la rueda.
Para el caso de PHP, todavía estoy investigando... Smarty no me convence demasiado...
Pueden consultar el siguiente
link para ver que otros Templates Engines existen para Java.
Saludos PF