strings parse length first java velocity freemarker stringtemplate

java - parse - length freemarker



¿Cuáles son las principales diferencias entre StringTemplate y FreeMarker? (2)

La red parece estar llena de comparaciones entre Velocity y FreeMarker, y parecen ser razonablemente equivalentes. ¡Pero parece que casi no hay comparaciones 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, hubiera esperado que FreeMarker fuera el más adecuado y más capaz, ya que parece ser el más común, pero a través de un vistazo rápido parece que StringTemplate realmente tiene características más adecuadas.

Sería genial si alguien que ha usado ambos tuviera tiempo para hacer comentarios; para los detalles específicos, solo puedo leer la documentación de lado a lado, pero me gustaría algo con lo que empezar.


Diseñé ST para construir jGuru después de cansarme del modelo de "código en plantilla" de JSP. La velocidad y los amigos (es decir, cualquier otro motor, creo) te dan más poder del que necesitas. Usé básicamente cuatro funciones para construir jGuru.com (como se describe en el documento). Más características son innecesarias y lo llevan a enredar su modelo en la plantilla. Si está 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 puede un diseñador gráfico leer el código en las plantillas? Ellos no pueden Entonces, ¿cómo pueden trabajar en las plantillas entonces? Incluso cambiando el orden de algunos elementos puede romper tu modelo. Realmente necesita la separación para trabajar en un entorno comercial, a menos que desee un sitio que se vea como un codificador creado en html;)


La principal diferencia es que StringTemplate impone estrictamente la separación de la vista del modelo y no puede poner la lógica en las plantillas y FreeMarker le permite poner la lógica completa en las plantillas. Esto al menos al principio hace que sea más difícil de 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 un artículo de Terence Parr que explica los beneficios de la separación modelo-vista.