Kit de herramientas de plantilla

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 27 de junio de 2017; las comprobaciones requieren 5 ediciones .

Template Toolkit es una biblioteca de plantillas de Perl  potente y ligera que separa el código, los datos y la presentación.

"Ligero" en este caso significa que la interacción del usuario, el trabajo con la base de datos , la llamada de plantillas para su procesamiento y visualización se realiza a través de scripts de perl que contienen toda la lógica de trabajo (ver lógica de negocios ), y las propias plantillas son las principales responsables del diseño/ actuación.

Esto contrasta con los sistemas de desarrollo "completamente desarrollados" (marcos), en los que Perl está muy estrechamente integrado con HTML y proporciona funcionalidad adicional para trabajar con páginas web, como sesiones .

Sin embargo, debe tenerse en cuenta que, en términos de velocidad, según los resultados de las pruebas , la biblioteca no es "liviana" y pierde notablemente frente a otros motores de plantillas comunes .

Características/beneficios/específicos

Template Toolkit utiliza su propio lenguaje, que tiene una sintaxis rica pero fácil de aprender.

Un ejemplo de plantilla simple:

<html> <head><title>[% título %]</title></head> <cuerpo> Lista de salida: <ul> [% FOREACH i = elementos %] <li>[% y %]</li> [%FINAL%] </ul> </cuerpo> </html>

Y el script que lo llama:

# !/usr/bin/perl usar Plantilla ; my $tt2 = nueva Plantilla ({ INCLUDE_PATH => '/ruta/a/plantillas' #Ruta al directorio de plantillas }); my $vars = { title => 'Título de página' , items => [ 'Uno' , 'Dos' , 'Tres' ] }; imprimir "Tipo de contenido: texto/html\n\n" ; $tt2 -> proceso ( "pagina1.htm" , $vars );

Los separadores de bloque de código predeterminados son [% y %] . Pero puede usar cualquier otra secuencia de caracteres, como <% %> , <? ?> y así sucesivamente. Además, puede cambiar la secuencia en cualquier momento dentro de la plantilla.

A continuación se muestra una lista de algunas de las características del kit de herramientas de plantillas:

  • Le permite desarrollar fácilmente las páginas del sitio de acuerdo con cualquier esquema: de arriba a abajo, de afuera hacia adentro y de adentro hacia afuera.
  • Utiliza una sintaxis unificada para todos los tipos de datos:

hash.key  : acceso a la matriz de claves
hash.1  : elemento de matriz con índice 1
object.method
:  llama a un método de objeto de manera

  • Para acelerar el trabajo, las plantillas se compilan en scripts de perlas durante el primer procesamiento y, según la configuración, se guardan en el disco o en la memoria. Gracias a esto, la velocidad del motor es muy alta y cercana a Perl puro.
  • Permite que varias plantillas utilicen datos comunes: configuraciones, variables, constantes, funciones, etc.
  • Un sistema avanzado para escribir complementos y filtros facilita la creación de sus propios complementos/filtros, o el uso de muchos de los existentes (suministrados con el kit de herramientas de plantilla).
  • Le permite insertar Pearl "en bruto" en las plantillas.
  • Los bloques pueden ser archivos separados o bloques definidos dentro de un archivo externo o actual.
  • La innovación que apareció en la segunda versión, "vistas" (vistas), le permite crear plantillas utilizando un enfoque orientado a objetos.
  • Puede procesar archivos XML , convirtiéndolos a HTML , proporcionando así una alternativa a XSLT .
  • La entrega incluye scripts de utilidades que permiten generar el conjunto requerido de páginas HTML a partir de un conjunto arbitrario de archivos de plantilla.
  • Buena documentación, considerada por muchos como el "estándar de oro" de la documentación entre las bibliotecas de Pearl.

La lista completa de funciones de Template Toolkit es muy larga. Se pueden encontrar más detalles en la documentación, que se puede encontrar en los enlaces en la parte inferior de la página.

Desventajas

Debido a que en Perl hay variables de diferentes tipos, y en el Template Toolkit todas se llaman de la misma forma, surgen ambigüedades.

Hay características de trabajar con objetos hash y objetos de matriz:

Cuando intenta pasar a través de un objeto de matriz a través de FOREACH, resulta que solo habrá un elemento en la lista: el objeto en sí.

Y al acceder al elemento arrayobj.$index , donde index  es el índice del elemento requerido, Template Toolkit intentará llamar a un método con ese nombre. Y los métodos con nombres 0, 7, 12, etc., en general, no existen en los lenguajes de programación.

Para resolver estos problemas, debe agregar el método as_list () al código de clase; esto es lo que llama Template Tookit cuando usa FOREACH.

sub como_lista { [ @ { $_ [ 0 ]}] }

El significado de este código es que se toma el objeto en sí, se convierte en una matriz regular y se convierte inmediatamente en una referencia de matriz, lo que se necesita para FOREACH.

¿Cómo ayuda as_list() a seleccionar elementos específicos de un objeto?

aref = aref_objeto . como_lista (); referencia .0 ; referencia .1 ;

Los problemas son causados ​​por la presencia de la función AUTOLOAD en la clase:

  1. intercepta todas las llamadas a los métodos virtuales de Template Toolkit
  2. dado que Template Toolkit primero intenta encontrar el método del objeto con el nombre especificado, y solo si falla, para encontrar la clave hash del mismo nombre, queda claro que AUTOLOAD también intercepta todas las llamadas a las claves hash

El segundo problema se puede resolver así:

sub AUTOLOAD { my ( $sub_name ) = $AUTOLOAD =~ /([^:]+)$/ ; #Encuentre el nombre del método solicitado si ( existe $_ [ 0 ]{ $sub_nombre }) { #Si el objeto tiene una clave llamada $sub_nombre, devuelva $_ [ 0 ]{ $sub_nombre } #luego devuélvalo } }

Sugerencias

Hay una matriz aref y una variable ix. Queremos generar el elemento de matriz en el índice especificado en ix.

Esto estaría mal:

aref _ ix

En este caso, se intentará llamar al método ix.

Y esto es correcto:

aref _ $ix

El signo de dólar $ se usa para sustituir el valor de una variable en una expresión.

Notas

Si bien Template Tookit se considera una biblioteca de plantillas "ligera", la sintaxis avanzada y un gran conjunto de características adicionales indican un sesgo hacia los "pesos pesados".

Aunque la plantilla se llama para su procesamiento desde un script de perl, es posible incrustar comandos de Template Toolkit directamente en el código de las páginas HTML comunes que los usuarios solicitan directamente. Para hacer esto, necesita instalar el módulo Apache::Template y hacer una pequeña configuración del servidor Apache.

Autores

Creador de la biblioteca Andy Wardley . Puede descargar la última versión de la biblioteca (Template-Toolkit-N.NN.tar.gz) desde CPAN . Vea los enlaces a los recursos a continuación.

Enlaces

Recursos externos

Los desarrolladores que utilizan Windows pueden descargar un archivo todo en uno que contiene Apache 2, Perl 5.x, mod perl 1.99 y muchas bibliotecas útiles que no se incluyen en la distribución estándar de Perl, como Template Toolkit 2 y Apache: plantilla. El archivo está aquí: ftp://theoryx5.uwinnipeg.ca/pub/CPAN  (enlace no disponible) .

Bibliotecas de plantillas de Perl

  • Ligero, MVC
    • Kit de herramientas de plantilla
    • HTML::Plantilla
    • Texto::Plantilla
    • CGI::Plantilla rápida
  • Sistemas de desarrollo de aplicaciones
    • embellecer
    • Apache::ASP
    • HTML::Albañil