Sada nástrojů pro šablony

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 27. června 2017; kontroly vyžadují 5 úprav .

Template Toolkit  je výkonná, lehká knihovna šablon Perl , která odděluje kód, data a prezentaci.

„Lightweight“ v tomto případě znamená, že interakce uživatele, práce s databází , volání šablon pro zpracování a zobrazení se provádí pomocí perlových skriptů obsahujících veškerou logiku práce (viz obchodní logika ), a samotné šablony jsou zodpovědné především za design / výkon.

To je na rozdíl od "plnohodnotných" vývojových systémů (frameworků), ve kterých je Perl velmi těsně integrován s HTML a poskytuje další funkce pro práci s webovými stránkami, jako jsou sessions .

Je však třeba poznamenat, že z hlediska rychlosti není knihovna podle výsledků testů „lehká“ a znatelně ztrácí na ostatní běžné šablonovací enginy .

Vlastnosti/výhody/specifika

Template Toolkit používá svůj vlastní jazyk, který má bohatou, ale snadno se naučitelnou syntaxi.

Jednoduchý příklad šablony:

<html> <head><title>[% title %]</title></head> <body> Výstup seznamu: <ul> [% FOREACH i = položky %] <li>[% i %]</li> [%KONEC%] </ul> </body> </html>

A skript, který to nazývá:

# !/usr/bin/perl use Template ; my $tt2 = nová šablona ({ INCLUDE_PATH => '/cesta/k/šablonám' #Cesta k adresáři šablon }); my $vars = { title => 'Název stránky' , položky => [ 'Jedna' , 'Dva' , 'Tři' ] }; print "Typ obsahu: text/html\n\n" ; $tt2 -> proces ( "page1.htm" , $vars );

Výchozí oddělovače bloků kódu jsou [% a %] . Můžete však použít jakoukoli jinou sekvenci znaků, například <% %> , <? ?> a tak dále. Navíc můžete pořadí kdykoli změnit přímo v šabloně.

Níže je uveden seznam některých funkcí sady nástrojů pro šablony:

  • Umožňuje snadno rozvíjet stránky webu podle libovolného schématu: shora dolů, zvenčí dovnitř a zevnitř ven.
  • Používá jednotnou syntaxi pro všechny typy dat:

hash.key  - přístup k poli hash
klíče.1  - prvek pole s indexem 1
object.method
- jednotné  volání objektové metody

  • Pro urychlení práce se šablony při prvním zpracování zkompilují do perličkových skriptů a podle nastavení se uloží na disk nebo do paměti. Díky tomu jsou otáčky motoru velmi vysoké a blízké čistému Perlu.
  • Umožňuje více šablonám používat společná data: nastavení, proměnné, konstanty, funkce a tak dále.
  • Pokročilý systém pro psaní zásuvných modulů a filtrů usnadňuje psaní vlastních zásuvných modulů/filtrů nebo použití mnoha existujících (dodáváno s Template Toolkit).
  • Umožňuje vkládat "surovou" Pearl do šablon.
  • Bloky mohou být buď samostatné soubory, nebo bloky definované uvnitř externího nebo aktuálního souboru.
  • Inovace, která se objevila od druhé verze - "views" (views), umožňuje vytvářet šablony pomocí objektově orientovaného přístupu.
  • Dokáže zpracovávat soubory XML a převádět je do HTML , čímž poskytuje alternativu k XSLT .
  • Součástí dodávky jsou pomocné skripty, které umožňují generování požadované sady HTML stránek z libovolné sady souborů šablon.
  • Dobrá dokumentace, kterou mnozí považují za „zlatý standard“ dokumentace mezi knihovnami Pearl.

Úplný seznam funkcí Template Toolkit je velmi dlouhý. Více podrobností naleznete v dokumentaci, kterou naleznete na odkazech v dolní části stránky.

Nevýhody

Vzhledem k tomu, že v Perlu jsou proměnné různých typů a v Template Toolkit se všechny nazývají stejně, vznikají nejasnosti.

Práce s objekty hash a objekty pole má funkce:

Když se pokusíte projít objekt pole přes FOREACH, ukáže se, že v seznamu bude pouze jeden prvek - samotný objekt.

A při přístupu k prvku arrayobj.$index , kde index  je index požadovaného prvku, se Template Toolkit pokusí zavolat metodu s tímto názvem. A metody s názvy 0, 7, 12 atd. obecně v programovacích jazycích neexistují.

Chcete-li tyto problémy vyřešit, musíte do kódu třídy přidat metodu as_list () – to je to, co Template Tookit volá při použití FOREACH.

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

Smyslem tohoto kódu je, že se vezme samotný objekt, přemění se na běžné pole a okamžitě se převede na referenci pole – to, co je potřeba pro FOREACH.

Jak as_list() pomáhá s výběrem konkrétních prvků z objektu?

aref = aref_object . jako_seznam (); aref .0 ; aref .1 ;

Problémy jsou způsobeny přítomností funkce AUTOLOAD ve třídě:

  1. zachycuje všechna volání virtuálních metod sady nástrojů šablon
  2. protože Template Toolkit se nejprve pokusí najít metodu objektu se zadaným názvem, a pouze pokud selže - najít hash klíč stejného jména, je jasné, že AUTOLOAD také zachytí všechna volání hash klíčů

Druhý problém lze vyřešit takto:

sub AUTOLOAD { my ( $sub_name ) = $AUTOLOAD =~ /([^:]+)$/ ; #Najděte název požadované metody if ( existuje $_ [ 0 ]{ $sub_name }) { #Pokud má objekt klíč s názvem $sub_name, vraťte $_ [ 0 ]{ $sub_name } #potom jej vraťte } }

Rady

Existuje pole aref a proměnná ix. Chceme vypsat prvek pole na indexu uvedeném v ix.

To by bylo špatně:

aref . ix

V tomto případě bude proveden pokus o volání metody ix.

A toto je správně:

aref . $ix

Znak dolaru $ se používá k nahrazení hodnoty proměnné do výrazu.

Poznámky

Zatímco Template Tookit je považován za "lehkou" knihovnu šablon, pokročilá syntaxe a velká sada dalších funkcí naznačují zaujatost vůči "těžkým vahám".

Přestože je šablona volána ke zpracování z perlského skriptu, je možné vložit příkazy Template Toolkit přímo do kódu běžných HTML stránek, které si uživatelé přímo vyžádají. Chcete-li to provést, musíte nainstalovat modul Apache::Template a provést malou konfiguraci serveru Apache.

Autoři

Tvůrce knihovny Andy Wardley . Nejnovější verzi knihovny (Template-Toolkit-N.NN.tar.gz) si můžete stáhnout z CPAN . Odkazy na zdroje viz níže.

Odkazy

Externí zdroje

Vývojáři používající Windows si mohou stáhnout all-in-one archiv obsahující Apache 2, Perl 5.x, mod perl 1.99 a mnoho užitečných knihoven, které nejsou součástí standardní distribuce Perlu, jako je šablona Template Toolkit 2 a Apache:. Archiv je zde: ftp://theoryx5.uwinnipeg.ca/pub/CPAN  (nedostupný odkaz) .

Knihovny šablon Perl

  • Lehký, MVC
    • Sada nástrojů pro šablony
    • HTML::Šablona
    • Text::Šablona
    • CGI::FastTemplate
  • Systémy pro vývoj aplikací
    • Emperl
    • Apache::ASP
    • HTML::Mason