Mall Toolkit

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 27 juni 2017; kontroller kräver 5 redigeringar .

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 .

Funktioner/fördelar/specifikationer

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:

  • Gör att du enkelt kan utveckla sidorna på webbplatsen enligt vilket schema som helst: från topp till botten, från utsidan till insidan och från insidan till utsidan.
  • Använder en enhetlig syntax för alla datatyper:

hash.key  - åtkomst till hash-nyckeln
array.1  - arrayelement med index 1
object.method
-  anropar en objektmetod

  • För att påskynda arbetet kompileras mallar till pärlskript under den första bearbetningen och, beroende på inställningarna, sparas de på disk eller minne. Tack vare detta är varvtalet på motorn mycket högt och nära ren Perl.
  • Tillåter att flera mallar använder vanliga data: inställningar, variabler, konstanter, funktioner och så vidare.
  • Ett avancerat system för att skriva plugins och filter gör det enkelt att skriva egna plugins/filter, eller använda många befintliga (medföljer Template Toolkit).
  • Låter dig infoga "rå" Pearl i mallar.
  • Block kan antingen vara separata filer eller block definierade i en extern eller aktuell fil.
  • Innovationen som dök upp från den andra versionen - "vyer" (vyer), låter dig skapa mallar med ett objektorienterat tillvägagångssätt.
  • Kan bearbeta XML- filer, konvertera dem till HTML , vilket ger ett alternativ till XSLT .
  • Leveransen inkluderar verktygsskript som tillåter generering av den nödvändiga uppsättningen HTML-sidor från en godtycklig uppsättning mallfiler.
  • Bra dokumentation, som av många anses vara "guldstandarden" för dokumentation bland Pearl-bibliotek.

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.

Nackdelar

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:

  1. den fångar upp alla anrop till Template Toolkits virtuella metoder
  2. eftersom Template Toolkit först försöker hitta metoden för objektet med det angivna namnet, och bara om det misslyckas - för att hitta hash-nyckeln med samma namn, blir det tydligt att AUTOLOAD också fångar upp alla anrop till hash-nycklarna

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 } }

Tips

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 . ix

I det här fallet kommer ett försök att göras att anropa metoden ix.

Och detta är korrekt:

aref . $ix

Dollartecknet $ används för att ersätta värdet av en variabel i ett uttryck.

Anteckningar

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.

Författare

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.

Länkar

Externa resurser

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) .

Perl mallbibliotek

  • Lättvikt, MVC
    • Mall Toolkit
    • HTML::Mall
    • Text::Mall
    • CGI::FastTemplate
  • System för applikationsutveckling
    • Embperl
    • Apache::ASP
    • HTML::Mason