Miniatura
2

Utilizando Twig en nuestros proyectos

Twig es un motor de plantillas para PHP. Vendría a ser una especie de JSTL (para los más javeros) para PHP pero muy inspirado en el fantástico, a mi parecer, sistema de templates de Django.

Ya hace más de un año contemplamos la introducción de alguno y al final nos decidimos por Twig y lo hemos aplicado ya a dos proyectos bastante grandes. De momento estamos muy contentos de como nos ha funcionado. Pasada la experiencia, ahora toca la reflexión, ver qué nos ha aportado y si es suficiente a pesar de las desventajas que pueda tener.

Puntos fuertes

La razón inicial para utilizar un sistema de plantillas era por la variedad de roles que participan en un proyecto. En concreto la figura del maquetador. Un buen sistema de plantillas ayuda a casar mejor el lenguaje de programación con la maquetación, o presentación de la información. Con Twig se consigue que alguien con no muchos conocimientos de programación pueda entender todo lo necesario sin problemas (loops, ifs y pintado de información, básicamente).

De rebote conseguimos otra cosa a valorar mucho, limpieza de código en la vista. Twig es simple, te da una variedad de opciones limitada a lo que necesitas en la vista: pintar información. Las funciones tienen nombres cortos, claros, no necesitas mucho boilerplate. Los proyectos en los que tenemos integrado twig luego deben mantenerse, sufren cambios y tienen un ciclo de vida largo. Todo lo que facilite la lectura del código siempre es bienvenido.

Ejemplo típico en php:

<?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>

Ejemplo utilizando twig:

{{ var|escape }}

Como podemos ver en según que casos simplifica las cosas, digamos que va al grano. Otro ejemplo, de loop:

<h1>Members</h1>
 <ul>
 {% for user in users %}
 <li>{{ user.username|e }}</li>
 {% endfor %}
 </ul>

Otro punto fuerte, que luego deriva en un mantenimiento más fácil, es que al limitarse a lo que es, pintar datos, ofrece lo justo para este propósito. Esto quita tentaciones a meter lógica en la vista y en cierta manera nos ayuda a aplicar mejor la arquitectura MVC.

Puntos débiles

Pues bueno, utilizar twig implica añadir una capa más entre el PHP y el HTML, requiere parsear o “traducir” los tags de twig a PHP/HTML e implica algo de sobrecarga. Twig ofrece la opción de cachear los ficheros ya parseados. Así que ofrece opciones para mejorar el rendimiento. De momento no hemos visto que la velocidad de carga con twig sea un problema en las aplicaciones en las que lo usamos.

También está el tema de que, queramos o no, añadimos algo de complejidad a la configuración de la aplicación, y a añadir librerías extras. Al final, nuestra teoría es que si la librería que añadimos la aprovechamos bien, utilizamos muchas de sus ventajas o funcionalidades que nos aporta, nos parece una buena opción incluirla. Si solamente se incluye para alguna ventaja aislada o muy concreta pensamos que es mejor implementarlo de cero y no utilizar una librería grande para solamente una o dos cosas.

Otros

Existen otros sistemas de templates en PHP. Está el Smarty, bastante utilizado en su momento pero parece que ha cedido terreno frente a Twig. También existe el Hangaa, ideado para Menéame por @crodas, inspirado 100% en los templates de Django y parece que bastante más eficiente que el resto de sistemas. Un día habrá que probarlos :-)

De momento podemos concluir que estamos bastante satisfechos con lo que nos aporta twig y le estamos sacando mucho provecho.

Imagen de @istylr

2 Respuestas a Utilizando Twig en nuestros proyectos

  1. Genial! Yo estoy trabajando en un proyecto con Symfony2 y al llevar Twig por defecto me gustó, y tambien empezé a implantarlo en mis proyectos personales, lo único que veo con cache activada es que el primer renderizado es mas lento de lo normal, mucho para mi gusto, però el resto, genial, sintaxis muy simple y clara, la curva de aprendizaje és muy muy ràpida

    Responder

  2. Pingback: [PHP] Utilizando Twig en nuestros proyectos | P...

Deja un comentario

Una web debe ser...

Una web
debe ser

Usable

Un usuario aprende cada día. Navega y utiliza servicios web acostumbrándose a tener algunos elementos en determinado lugar y a utilizarlos de cierta manera. Una aplicación es usable si antes de hacer una determinada acción se puede predecir lo que sucederá.

Universal

El punto de mayor incidencia en la universalidad es que la aplicación sea multidispositivo. Poder visualizar desde cualquier dispositivo, lugar, y momento. Y además, disfrutar de una experiencia de usuario plena.

Encontrable

Hablamos de un conjunto de normas, pautas o guías por las que el usuario llega a la aplicación. Debe encontrar la aplicación, pero puede llegar mediante buscadores (SEO), también con recomendaciones, lecturas en medios, desde redes sociales (SMO), y otros métodos (SEM, etc)

Veloz

Como dijo David Cheriton: "Si es rápido y feo, lo utilizarán y te maldecirán, y si es lento, no lo utilizarán". Si una web es rápida repercute en menos gasto mensual, más satisfacción del usuario, y mayor posibilidad de conversión por parte del mismo.

Útil

Un sitio web tiene que ser útil en vistas al usuario para el que está concebido. Hay que entender la necesidad del usuario y poder ofrecer lo que busca. Contenidos, traducciones, herramientas, comparativas, utilidades, etcétera...

Cerrar