miércoles, enero 03, 2007

Los Templates Engines y su conexión con lo insano

Lo que van a leer en este post puede provocar serios trastornos en su salud mental (y esto para programadores web en general, no sólo de Java).
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

3 Comments:

At 6:04 a. m., Blogger Ale Sarco said...

Pues no entiendo a que apuntás. La propia definición que dás de template no dice que solucione todos los problemas entre diseñadores/programadores. Es más, no sé de donde sacaste esa idea. Un template simplemente es una ayuda, no hay que verlo como mas que eso. Pensá qué horrible sería tener que generar HTML en un string dentro de una clase Java.
Por otro lado, Tiles no me parece que sea un sistema de templates en el sentido que le estas dando, yo mas bien lo veo como un sistema de composición de páginas web (tarea para la cual Sitemesh me resulta mucho mas simple). JSP sería acá el template.
Y cuál es la solución que proponés? Porque por mas que leo ese párrafo no veo que propongas ninguna solución al problema que describís.

Si realmente te preocupa tanto la relación diseñador/programador, me permito recomendarte el uso extensivo de CSS y que investigues algún framework basado en componentes como por ejemplo Wicket.

 
At 6:42 p. m., Blogger Pablo Frias said...

Ale, gracias por aportar. Me quejo de la forma en que nos quieren vender el uso de templates simplemente.
Con respecto a la relación diseñador/programador, quizá hayas tenido más suerte que yo a la hora de trabajar con diseñadores. Perdón si no lo aclaré, pero daba por implícito el uso de CSS.
Con respecto a Wicket y Sitemesh, los voy a probar.
Gracias

 
At 12:40 p. m., Anonymous Anónimo said...

Hola, yo estoy comenzando con Tiles y me parece bueno pero al utilizar JSTL me he dado cuenta que no puedo usar las etiquetas core para asignar valores a variables.
Ej:

c:set var="cuatro" value="4"
c:out value="Cuatro: ${cuatro}"

(he quitado los simbolos mayo, menor y barra para que no haya problemas)

Este codigo funciona en una pagina JSP 'normal' pero si lo pongo en una JSP dentro de Tiles lo qo que haces es escribir la cadena "${cuatro}". La verdad es que no se que hay que hacer y me ha rayado un poco.

Si pudieras darme una explicacion/solucion te lo agradecería.


Gracias.Jose Maria

 

Publicar un comentario

<< Home