Antes que nada ¿Por que usamos un gestor de plantillas?

Bueno es una buena practica de desarrollo de software el dividir nuestro sistema en diferentes capas para con fines de organización, performance, seguridad entre otros, el uso de plantillas nos permite separar la vista de la lógica y de los modelos en nuestro desarrollo, es importante conciderarlo.

Blade
Este es el motor de la plantilla utilizada por laravel 4, un marco de PHP que comenzó su vida en 2011 y ha aumentado rápidamente para convertirse en uno de los marcos-top utilizado PHP en el mundo de hoy. Este motor de plantillas se rumoreaba que era bastante rápido debido al hecho de que su núcleo se ejecuta en un breve recopilación de los reemplazos de expresiones regulares. Además, como parte de laravel está destinado a ser cargado de funciones.

Mustache
Si usted no ha oído hablar de bigote que haya sido escondidos bajo una roca. Es la primera definición de atributo es que está disponible para casi cualquier idioma que se pueda imaginar. A continuación, se anuncia como la lógica-menos, lo que básicamente significa que sólo contiene la línea de base absoluta de la lógica un motor de plantillas puede tener (la sustitución de tokens, para cada uno, si nula). Lo dejan lógica menos intencionadamente, quizá para facilitar la portabilidad a todos los idiomas, pero quizás también para llevar el concepto de puntos de vista limpias a un extremo para aquellos que consideran que su principal prioridad.

Smarty
Tuve mi primera experiencia con un motor de plantillas en 2002 cuando estaba trabajando con el carrito de la compra de software que utiliza Smarty para hacer que todas las pantallas y listados de productos, y durante años después el nombre de Smarty era prácticamente sinónimo del término "motor de la plantilla " . Un avance rápido hasta hoy y Smarty sigue vivo y coleando. Mientras que su sitio web todavía puede verse como lo hizo en 2002, el motor de la plantilla en sí está en desarrollo activo con la versión 3 programación orientada a objetos.

Twig
Ramita se hizo popular cuando Symfony PHP desarrollador marco Fabien Potencier encontró una iteración anterior del motor, asumió la propiedad del proyecto, puesto al día para cumplir con su visión, y lo integró como motor oficial de vista de Symfony. beneficio de la ramita reside no sólo en el mismo de la toma de tono perfecto sobre la herencia, posibilidad de ampliación, e incluyó la funcionalidad - sino también en el hecho de que es un componente independiente, lo que significa que se puede utilizar en cualquier marco o aplicación PHP independiente.

Volt
Este es el motor de la plantilla utilizada por Phalcon, el marco PHP que es la velocidad del rayo porque se distribuye como una extensión de PHP C-compilados. Tengo grandes esperanzas en el marco Phalcon PHP en su conjunto, así que esto fue una gran oportunidad para ver cómo es el motor de plantillas apilados al lado de otros.

¿Qué nos fijamos en cuando se comparan?

Nos fijamos en muchas cosas, incluyendo la sintaxis, la lógica disponible, capacidad de expansión, la documentación, la actividad de desarrollo, apoyo a la comunidad, y el rendimiento en una prueba de velocidad. Nuestra prueba de velocidad compila una plantilla principal que contiene un bucle que incluye 1.000 plantillas extendidas con contenido numerados secuencialmente. Cada extendidos plantilla contenida fichas de matriz, marcadores de objeto, un if / else condición y contenido de bloque extendido. Cada memoria de ensayo recogido y utilizado unas plantillas definitivas dictadas por segundo cálculo. En los casos en que el motor de la plantilla se ha incrustado en un marco (Blade, voltios), el uso de memoria del marco de trabajo y los tiempos de carga eran incluir en el resultado. Aquí está un resumen de cómo cada motor apilados:

Blade

Sintaxis y funcionalidad
No hay duda de que la lámina está repleto de funcionalidad. Sin embargo, me encontré un poco "en la valla "con la sintaxis que no estoy completamente vendido en el aspecto de la @" s para las llamadas de función. Probablemente podría acostumbrarme a la sintaxis, pero me encontré con las etiquetas de cierre de sección extensible (mostrar, ocultar, sobrescribir) confuso y simplemente no pude conseguir una plantilla extendida para compilar a través de un incluirán - que parecía extraño porque todos los otros motores de mango sin ningún problema.

Documentación y Soporte
La hoja está bastante bien documentado, pero me pareció un poco "visión general-ish", ya que deja algunos de los más finos puntos hasta otros sitios web (como Código brillante) y tutoriales para explicar con más detalle.

prueba de rendimiento
Este motor era muy intrigante durante la prueba. Velocidad estaba gritando rápido (100.000 + plantillas / seg) cuando solamente marcando compilación plantilla, pero tan pronto como fui a un reloj todo el marco que cayó al último lugar (2.206 plantillas / seg). Sin estar seguro de cómo efectivamente se podía extraer de la hoja de laravel, he tenido que incluir el tiempo de carga marco en la prueba por el bien de la toma de decisión segura.

Conclusión
Con preguntas acerca de la sintaxis, dificultad para la compilación de las plantillas incluyen extendidos a través de la función, y que tiene que laravel atornillado a 4, no vi esto como el sistema más adecuado para nosotros.

Mustache

Sintaxis y funcionalidad
deportes bigote como poco de lógica de lo posible, que simplemente no va a volar muy bien con nuestro equipo de desarrollo. Con solamente la impresión de contadores, en bucle, y si nulos / comparaciones vacías, ya que obligaría a los desarrolladores de back-end para crear banderas adicionales por si desea imprimir o no ciertas cosas y tomar filtrar / escapar de los valores de distancia de nuestros desarrolladores front-end .

Documentación y Soporte
No hay mucho a la documentación, pero que tiene sentido ya que la funcionalidad es tan limitada. Supongo que una vez que se aprende un par de conceptos básicos que no hay ninguna necesidad de revisar la documentación de nuevo.

prueba de rendimiento
Bigote es muy rápido (6.000 plantillas / seg) así que no hay problemas allí.

Conclusión
Hay mucho que gusta de la simplicidad del bigote - y sé que mucha gente lo hace, pero al final la falta de lógica mantiene de ser una opción viable para nosotros.

Smarty

Sintaxis y funcionalidad
La sintaxis se ve muy bien; es muy limpio y sencillo. Un montón de buena funcionalidad, muy extensible.

Documentación y Soporte
La documentación para Smarty es clara y bien organizada. Tengo problemas para encontrar respuestas a las cosas cuando voy allí. La página web en sí parece bastante anticuado y no tienen ninguna presencia GitHub, pero parece que se llevan muy bien.

prueba de rendimiento
Smarty es bastante rápido con las plantillas sin almacenamiento en caché (9.634 plantillas / seg) y anormalmente rápido cuando se sirve directamente de la memoria caché (57,115 plantillas / seg). Si la velocidad es su prioridad y que tienen un gran número de plantillas estáticas, Smarty podría ser para usted.

Conclusión
No se siente tan moderno como otras opciones, pero es una buena funcionalidad velocidad innegable la llevó a los dos últimos.

Twig

Sintaxis y funcionalidad
Inspirándose en el motor de plantillas Jinja para Python, la ramita es limpio y agradable a la vista. Viene con un conjunto completo de funciones, filtros, pruebas y macros que puede extender. Es el deporte de control útil sobre el escape, un modo de recinto de seguridad, manejo de excepciones, y la carga de la plantilla.

Documentación y Soporte
La documentación está bien organizado, informativo y demostrativo. La comunidad alrededor de la ramita es grande y vocal. El desarrollo es activa en Github. El marco que llama hogar (Symfony 2) ha sido seleccionado para alimentar Drupal 8; la liberación programación orientada a objetos del 2º CMS más grandes en el mundo detrás de Wordpress.

prueba de rendimiento
Aunque no es tan rápido como Smarty o el Volt C-compilado, Ramita tiene su propio en términos de velocidad sin almacenamiento en caché (4.318 plantillas / seg) y en caché (5.982 plantillas / seg). Esto será ser perfectamente pronta para nuestras necesidades.

Conclusión
Ramita parece un buen motor para adoptar. Como un paquete independiente que puede ir a cualquier lugar que desee llevarlo. Es la documentación está en punto, la velocidad del motor que cumple con nuestras exigencias, y que luce la funcionalidad necesaria para equipar adecuadamente nuestro equipo de desarrollo de front-end.

Volt

Sintaxis y funcionalidad
Al igual que la ramita, Volt también se inspira en el motor de plantillas Jinja, por lo que la sintaxis es limpio y agradable a la vista. Se viene embalado con la funcionalidad, y le permite codificar sus propias extensiones de filtros, funciones, macros, y del motor.

Documentación y Soporte
La documentación está limpio, informativo y demostrativo. Desarrollo de todo el marco Phalcon está vivo y animado en Github. El foro de la comunidad Phalcon también es muy activa.

prueba de rendimiento
Con este motor en marcha en el compilado-C, la velocidad sin almacenamiento en caché de Volt se eleva en territorio supersónica (23, 906 plantillas / seg) y se duplica esta velocidad cuando el aprovechamiento de la memoria caché (47,851 plantillas / seg). Más impresionante aún, se tira de esos números con toda la carga de la pila Marco Phalcon incluido. Como se recordará, el otro motor atornillado a un marco (Blade) era aproximadamente 20 veces más lento que esto después incluyendo su marco conjunto.

Conclusión
Volt es una opción impresionante. Es extremadamente rápido, altamente funcional y bien documentado. También es un motor no portátil (atornillado al marco Phalcon), que impide que sea adoptada en este momento - pero es similitudes con la ramita que sea algo digno de una mirada más cercana en el futuro.