Template Toolkit är ett kraftfullt, lätt Perl -mallbibliotek som separerar kod, data och presentation.
"Lättvikt" betyder i det här fallet att användarinteraktion, arbete med databasen , anrop av mallar för bearbetning och visning sker genom perl-skript som innehåller all arbetslogik (se affärslogik ), och mallarna själva är huvudsakligen ansvariga för designen / prestanda.
Detta till skillnad från "fullfjädrade" utvecklingssystem (frameworks), där Perl är mycket tätt integrerat med HTML , och ger ytterligare funktionalitet för att arbeta med webbsidor, såsom sessioner .
Det bör dock noteras att när det gäller hastighet, enligt testresultaten , är biblioteket inte "lätt" och förlorar märkbart till andra vanliga mallmotorer .
Template Toolkit använder sitt eget språk, som har en rik men ändå lättläst syntax.
Ett enkelt mallexempel:
<html> <head><title>[% title %]</title></head> <kropp> Listutdata: <ul> [% FOREACH i = objekt %] <li>[% i %]</li> [%slutet%] </ul> </body> </html>Och manuset som kallar det:
# !/usr/bin/perl använd mall ; min $tt2 = ny mall ({ INCLUDE_PATH => '/sökväg/till/mallar' #Sökväg till mallkatalog }); my $vars = { title => 'Sidtitel' , items => [ 'En' , 'Två' , 'Tre' ] }; skriv ut "Innehållstyp: text/html\n\n" ; $tt2 -> process ( "page1.htm" , $vars );Standardkodblockseparatorerna är [% och %] . Men du kan använda vilken annan teckensekvens som helst, till exempel <% %> , <? ?> och så vidare. Dessutom kan du ändra sekvensen när som helst direkt i mallen.
Nedan är en lista över några av funktionerna i Template Toolkit:
hash.key - åtkomst till hash-nyckeln
array.1 - arrayelement med index 1
object.method
-
anropar en objektmetod
Den fullständiga listan över Template Toolkit-funktioner är mycket lång. Mer information finns i dokumentationen som finns på länkarna längst ner på sidan.
På grund av att det i Perl finns variabler av olika slag, och i Template Toolkit kallas de alla på samma sätt, uppstår oklarheter.
Det finns funktioner för att arbeta med hash-objekt och array-objekt:
När du försöker passera genom ett arrayobjekt genom FOREACH, visar det sig att det bara finns ett element i listan - själva objektet.
Och när du kommer åt elementet arrayobj.$index , där index är indexet för det nödvändiga elementet, kommer Template Toolkit att försöka anropa en metod med det namnet. Och metoder med namnen 0, 7, 12, etc., i allmänhet, finns inte i programmeringsspråk.
För att lösa dessa problem måste du lägga till metoden as_list () till klasskoden - det är detta som Template Tookit anropar när du använder FOREACH.
sub as_list { [ @ { $_ [ 0 ]}] }Innebörden av denna kod är att själva objektet tas, förvandlas till en vanlig array och omedelbart omvandlas till en arrayreferens - vad som behövs för FOREACH.
Hur hjälper as_list() att välja specifika element från ett objekt?
aref = aref_objekt . as_list (); aref .0 ; aref .1 ;Problem orsakas av närvaron av AUTOLOAD-funktionen i klassen:
Det andra problemet kan lösas så här:
sub AUTOLOAD { my ( $sub_name ) = $AUTOLOAD =~ /([^:]+)$/ ; #Hitta namnet på den begärda metoden om ( finns $_ [ 0 ]{ $sub_name }) { #Om objektet har en nyckel som heter $sub_name, returnera $_ [ 0 ]{ $sub_name } #then return it } }Det finns en array aref och en variabel ix. Vi vill mata ut matriselementet vid det index som anges i ix.
Detta skulle vara fel:
aref . ixI det här fallet kommer ett försök att göras att anropa metoden ix.
Och detta är korrekt:
aref . $ixDollartecknet $ används för att ersätta värdet av en variabel i ett uttryck.
Medan Template Tookit anses vara ett "lättviktigt" mallbibliotek, indikerar den avancerade syntaxen och en stor uppsättning ytterligare funktioner en partiskhet mot "tungvikterna".
Även om mallen kallas för bearbetning från ett perl-skript, är det möjligt att bädda in Template Toolkit-kommandon direkt i koden för vanliga HTML-sidor som användare begär direkt. För att göra detta måste du installera Apache::Template-modulen och göra en liten konfiguration av Apache-servern.
Biblioteksskaparen Andy Wardley . Du kan ladda ner den senaste versionen av biblioteket (Template-Toolkit-N.NN.tar.gz) från CPAN . Se länkar till resurser nedan.
Utvecklare som använder Windows kan ladda ner ett allt-i-ett-arkiv som innehåller Apache 2, Perl 5.x, mod perl 1.99 och många användbara bibliotek som inte ingår i standarddistributionen av Perl, som Template Toolkit 2 och Apache: mallen. Arkivet finns här: ftp://theoryx5.uwinnipeg.ca/pub/CPAN (inte tillgänglig länk) .