2010-09-18 34 views
27

La red parece estar llena de comparaciones entre Velocity y FreeMarker, y parecen ser razonablemente equivalentes. ¡Pero parece que no hay casi ninguna comparación entre StringTemplate y FreeMarker!¿Cuáles son las principales diferencias entre StringTemplate y FreeMarker?

Entonces, ¿cuáles son las principales diferencias entre StringTemplate y FreeMarker?

Mi uso para ellos sería generar páginas HTML solamente. De los dos, esperaba FreeMarker para ser el más adecuado y más capaz, ya que parece que el más común, pero a través de un vistazo rápido parece que StringTemplate en realidad tiene características más adecuadas!

Sería genial si alguien que haya usado ambos tuviera tiempo para comentar, para los detalles específicos, puedo leer la documentación uno al lado del otro, pero me gustaría algo para empezar.

+0

¡Una aclaración rápida! No me interesan las diferencias obvias: que StringTemplate es funcional y no tiene bucles, etc. ¡y FreeMarker es casi un lenguaje de programación completo! Me interesan las diferencias de características concretas que surgen durante el uso, donde una cosa es fácilmente posible con una, pero realmente difícil con la otra. – Nakedible

Respuesta

29

he diseñado para construir ST jGuru después de enfermarse del modelo de "código en la plantilla" de JSP. La velocidad y los amigos (es decir, cualquier otro motor, creo) te dan más potencia de la que necesitas. Usé básicamente cuatro características para compilar jGuru.com (como se describe en el documento). Más funciones son innecesarias y te llevan a enredar tu modelo en la plantilla. Si estás construyendo un prototipo único, está bien y cualquier motor está bien. El código en las plantillas está bien en ese caso, ya que no le importa el mantenimiento.

Otra cosa que la gente parece ignorar: ¿cómo demonios puede un diseñador de gráficos leer el código en las plantillas? Ellos no pueden. Entonces, ¿cómo pueden trabajar en las plantillas? Incluso cambiar el orden de algunos elementos puede romper su modelo. Realmente necesita la separación para trabajar en un entorno comercial, a menos que desee un sitio que se parece a un codificador construido con el html;)

+3

¡No sabe lo suficiente sobre ST para comentar! ;-) Pero en serio, estaba más interesado en las * otras * características, además de la separación de la vista de modelo. Cosas como la herencia de la plantilla, que está presente en ST pero no en FM, al menos no de la misma manera. Parece muy extraño que nadie parezca considerar StringTemplate al comparar FreeMarker, Velocity o incluso XSLT. – Nakedible

+0

hiya. Sí, la herencia es fundamental para evitar la duplicación de plantillas. Lo uso extensivamente en la generación de código ANTLR. Tengo plantillas básicas, por ejemplo, Java para generar analizadores. Si quieres árboles, tengo que inyectar código de construcción de árbol y sin duplicar todo el grupo de Java. Si enciendes -debug, necesito inyectar activadores de eventos de depuración. ¡A veces los dos! La herencia le permite describir la diferencia entre el resultado Java simple y el resultado Java con acciones de depuración/árbol. –

+3

¡La herencia es lo que hace que ST sea tentadora! De lo contrario, no me gusta el mvc demasiado estricto, ya que no tenemos diseñadores de gráficos míticos que no puedan resistir los cambios de MVC y no puedan entender VTL muy simple. –

6

La principal diferencia es que StringTemplate impone estrictamente la separación de la vista de modelo y no se puede poner la lógica en las plantillas y FreeMarker le permite poner mucha lógica en las plantillas. Esto al menos al principio hace que sea más difícil usar pero es más escalable. Por ejemplo, si está generando código y no tiene lógica en las plantillas, generar otro puerto para otro idioma es menos tedioso porque no tiene que replicar la lógica en cada plantilla.

Hay a paper de Terence Parr que explica los beneficios de la separación modelo-vista

+1

Gracias, pero lea mi aclaración sobre la pregunta: la respuesta realmente no me dice nada que yo no sepa todavía. – Nakedible

+0

enlace de papel roto ahora –

Cuestiones relacionadas