Sistemas de templates

29 oct 2012 by shadow_of__soul, 1 Comment »

gracias a http://agileblaze.com/ por la imagen ilustrativa

Este articulo va a combinar varias cosas, desde opinion, a experiencias propias, y va a ir de php a javascript al final, raro no? Espero ser lo suficientemente claro para poder hacerles entender lo que pienso en este aspecto. Primero, empecemos por lo basico:

Que es un sistema de templates?

Un sistema de templates se le llama a un framework/clases/funciones que se encargan de abstraer la vista/diseño de la obtencion de la informacion misma a ser mostrada al usuario (por ejemplo, nuestro index.php de un sitio obtiene toda la informacion que necesita de la DB, archivos etc.. y se la pasa al sistema de templates para que la muestre junto al codigo html/css/js que componen finalmente lo que se le muestra al usuario).

Sistemas de templates en web

Mas alla de la obvia ventaja de poder separar datos de la vista a nivel arquitectura de una aplicacion, hay que tener cuidado al usar y elegir un sistema de template. Algunos puntos claves que aprendi (a la manera dificil por cierto) es que para que un framework/sistema de template sea util a largo plazo.

  • No debe usar ningun pseudo lenguaje, solamente php: uno de los sistemas mas conocidos de templates es smarty (no lo voy a ni a linkear…). Este fue para mi, el primer (y ultimo) sistema de templates para php que use. Voy a reconocerlo, al principio, me parecio genial, con un monton de caracteristicas, funciones etc.. Lo implemente en un sistema de mediana envergadura, y cuanto mas codigo le empece a agregar, peor fue, cada vez consumia mas recursos hasta que se hizo inmantenible. Smarty usa un pseudo lenguaje, que es parseado y convertido en php. Esto requiere de procesos extras sin sentido, ademas que hace dificil a nuevos devs no acostumbrados a usarlo, a trabajar con sus archivos.
  • Debe tener una forma facil de cachear contenido, mejor si es a multiples destinos: El cachear contenido es uno de los pilares de la web, ya que es la unica forma de poder servir contenido al usuario en caso de alta demanda. Un sistema de templates tiene que tener una forma facil de crear y actualizar la cache en caso de cambios, y si es en diferentes formatos, mejor (archivos, memcache etc..)
  • En lo posible, debe isolar las variables/funciones disponibles para la template a ejecutar: Como paranoico de la seguridad, y al tener que ejecutar codigo php, es ideal que el sistema pemita declarar especificamente (o bindear) funciones y variables que solo van a ser usadas en la template y solo esas sean accessible (ademas de las estandar de php, por supuesto). Asi evitamos que la template pueda obtener datos sensibles que pueden ser de acceso global (como credenciales de bases de datos y etc..).

Por ahi no tengan la necesidad de evaluar esto en el futuro si estan obligados a utilizar un framework, pero si algun dia necesitan elegir un sistema de templates o un framework, son puntos importantes a tomar en cuenta.

El cambio de roles con el 2.0

Aquellos que vieron por lo menos la mitad de la evolucion de la web, se daran cuenta que cada vez mas funciones que antes se hacian en php (o no se hacian :P ) se trasladaron a la vista, al cliente con javascript. Transiciones, carga de datos, cambios dinamicos. Esto no tiene solo que ver con aliviar la carga del servidor, ya que todo esto se hace en la maquina del cliente, sino tambien en ofrecer una experiencia mas rica, visual, y disfrutable a los ojos y experiencia del usuario. Pero tambien trajo problemas en el mantenimiento a largo plazo del contenido, el cacheo del mismo y de mantener una organizacion y mantenimiento de codigo entre la vista procesada por el servidor y la vista procesada por el cliente.

Todo lo que sean transiciones, normalmente es encargado a un framework (conjunto de) JS que hace todo esto (jQuery, Backbone, etc..). Pero yendo a un punto mas primitivo, todo es html como base de transiciones, como contenedor de datos, y para los que lo han echo, saben que escribir html con JS, puede ser tremendamente engorroso. Tambien, atrae a un problema en estructuras de empresas donde no se tienen diseñadores capacitados en JS para mantener esta basica contruccion de html.

Por suerte, existe Plates, que es un sistema de template, pero para JS. En este, no es necesario construir html con JS, sino que puede cargarse dinamicamente (via AJAX) o puede estar en una string y plates lo va a parsear en elementos DOM directamente. Actualmente estoy desarrollando un projecto que utiliza Plates intensivamente, asi que mas adelante tendre datos certeros del mismo, pero me resulta interesantisimo mover la vista directamente (y en lo posible, de manera total) al cliente. Que el lenguaje del servidor se encarga de solo construir cadenas de datos y cachearlos (en memoria si fuera necesario) y que Plates se encargara de la vista, seria mucho mas simple de mantener a largo plazo y de agregar/quitar/modificar comportamientos en la vista de manera simple y practica. Ademas, para grupos de trabajo, aquellos diseñadores que no comprenden JS del todo, pueden agregar su codigo html/css sin problemas.

En conclusion, se vienen tiempos interesantes, un poco fragmentados, pero eso no es una novedad en la web verdad? :D

 

 

 

Etiquetas: , , ,

  • Súper Chinazo

    Gracias

Sigueme !

Follow Me! Follow Me! Follow Me!