2010-11-09 26 views
22

Estoy tratando de decidir entre Freemarker y Velocity para usar como motor de plantillas, ¿cualesquiera ventajas/desventajas que vea con respecto a cada una?Freemarker vs. Velocity

¿Alguna alternativa que debería considerar?

+3

Se le preguntó, pero éste obtuvo una mejor respuesta. – Speck

Respuesta

35

Velocity y Freemarker son bastante capaces. No agonices por la elección. Tienen prioridades bastante diferentes detrás de su diseño, por lo que una vez que superas las plantillas básicas, sus conjuntos de características son difíciles de comparar. La sintaxis de Velocity es más simple y distinta, la sintaxis más pesada de Freemarker les permite soportar libs JSP. Velocity ofrece más libertad y, en definitiva, más funciones a través de proyectos adicionales como VelocityTools. Freemarker proporciona un manejo de espacios en blanco nativo mucho mejor, las versiones recientes de Velocity proporcionan controles de contenido más interesantes (#define, #evaluate, # [[literal block]] #).

En cuanto a rendimiento, Velocity ha tenido grandes avances en los últimos años, excepto quizás en el análisis inicial de la plantilla. Pero para cualquier aplicación sensata en la que el rendimiento sea importante, debe tener ambos motores configurados para plantillas de memoria caché y solo analizar una vez, por lo que este no es un problema. En general, encontrará que su rendimiento con cualquiera de los motores depende mucho más de la naturaleza de sus plantillas que las diferencias entre los motores.

StringTemplate también es respetable, aunque son MVC nazis y no pueden coincidir con Velocity o Freemarker para las características.;) Su posible decepción es un poco más alta que cualquiera de los motores de plantillas más populares, de los cuales ninguno decepcionará mucho. Solo toma uno y ve.

+0

** "No se angustie por la elección". ** ¡Bien escrito! – Stephan

8

Prefiero FreeMarker. Me encanta la documentación, siempre puedo encontrar lo que necesito. En general, creo que es muy poderoso.

String Template es otra alternativa.

+2

Una vez más, esa comparación está desactualizada y solo compara las características básicas, haciendo caso omiso de los diversos y potentes proyectos complementarios de Velocity. No es un crédito para la comunidad de freemarkers que no lo actualicen. –

+0

@Nathan Bubna - Realmente no he usado la velocidad en algún momento, ¿qué está exactamente desactualizado en esa comparación? – Andy

+0

La mayoría, más de lo que puedo señalar aquí. Está basado en Velocity 1.2, que fue como hace 9 años. Velocity 1.7 está en fase beta y pronto será definitivo. También parece implicar que cosas como VelocityTools son "soluciones", lo cual no es una evaluación justa. –

2

Hay un lengthy comparison en la página del proyecto freemarker.

Nunca he trabajado con la velocidad, no puedo comparar significativamente los dos, pero estaba tan satisfecho con freemarker que no vi ninguna razón para mirar más allá.

+1

Esa larga comparación fue quizás válida para Velocity 1.4, pero Velocity ha agregado mucho desde entonces. Y esa comparación siempre se negó a reconocer la existencia del popular proyecto VelocityTools, que siempre ha proporcionado una gran cantidad de características. –

+1

Corrección, esa comparación fue válida para Velocity 1.2. La mayoría de ellos ahora es compatible con Velocity (aunque a veces se implementa de manera diferente), la mayoría del resto es compatible con VelocityTools. Y parte de la "comparación" es simplemente extraña. Velocity no necesita funciones independientes de Java, cuando admitimos las funciones de Java fácilmente. –

+0

El enlace a la "comparación larga" está muerto – domih

5

Parece que this es un resumen decente de la comparación. Sin embargo, tiene algunos años.

Desde el artículo:

En conclusión

Tanto FreeMarker y velocidad son muy plantilla de motores capaces. Velocity parece disfrutar de una base de usuarios más grande, probablemente debido al hecho de que es parte del proyecto Apache. Como he mostrado en este artículo, FreeMarker es el más sofisticado y más rápido de los dos. En operaciones básicas de ambos motores de plantilla son casi similares, proporcionando una API que es fácil de entender.

Tanto la velocidad y FreeMarker son bastante fácil de integrar en una aplicación y ofrecen un buen rendimiento en plantillas pequeñas. Velocity ralentiza hacia abajo al analizar plantillas más grandes, que puede tener en cuenta cuando elegir un motor de plantilla para su proyecto .

0

Freemarker no se ejecuta en Android. Por lo tanto, actualmente estoy convirtiendo mi proyecto a Velocity para hacerlo compatible con dispositivos móviles.