Mallin työkalupakki

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 27. kesäkuuta 2017 tarkistetusta versiosta . tarkastukset vaativat 5 muokkausta .

Template Toolkit  on tehokas, kevyt Perl - mallikirjasto, joka erottaa koodin, datan ja esityksen.

"Kevyt" tarkoittaa tässä tapauksessa, että käyttäjän vuorovaikutus, työskentely tietokannan kanssa , mallien kutsuminen käsittelyä ja näyttöä varten tehdään perl-skriptien kautta, jotka sisältävät kaiken työn logiikan (katso liiketoimintalogiikka ), ja mallit itse ovat pääosin vastuussa suunnittelusta / esitys.

Tämä on toisin kuin "täysimittaiset" kehitysjärjestelmät (kehykset), joissa Perl on erittäin tiiviisti integroitu HTML :ään ja tarjoaa lisätoimintoja web-sivujen, kuten istuntojen , kanssa työskentelyyn .

On kuitenkin huomattava, että nopeuden suhteen testitulosten mukaan kirjasto ei ole "kevyt" ja häviää huomattavasti muille yleisille mallikoneille .

Ominaisuudet/edut/erityiskohdat

Template Toolkit käyttää omaa kieltään, jolla on rikas mutta helposti opittava syntaksi.

Yksinkertainen malliesimerkki:

<html> <head><title>[% otsikko %] </title></head> <body> Listan tulos: <ul> [% FOREACH i = kohteet %] <li>[% i %]</li> [%END%] </ul> </body> </html>

Ja sitä kutsuva käsikirjoitus:

# !/usr/bin/perl use Template ; my $tt2 = uusi malli ({ INCLUDE_PATH => '/polku/malleja' #Polku mallihakemistoon }); my $vars = { title => 'Sivun otsikko' , items => [ 'Yksi' , 'Kaksi' , 'Kolme' ] }; tulosta "Content-type: text/html\n\n" ; $tt2 -> prosessi ( "sivu1.htm" , $vars );

Oletuskoodilohkoerottimet ovat [% ja %] . Mutta voit käyttää mitä tahansa muuta merkkijonoa, kuten <% %> , <? ?> ja niin edelleen. Lisäksi voit muuttaa järjestystä milloin tahansa suoraan mallin sisällä.

Alla on luettelo joistakin Template Toolkitin ominaisuuksista:

  • Voit helposti kehittää sivuston sivuja minkä tahansa kaavan mukaan: ylhäältä alas, ulkopuolelta sisään ja sisältä ulos.
  • Käyttää yhtenäistä syntaksia kaikille tietotyypeille:

hash.key  - pääsy hash-
avaintaulukkoon.1  - taulukon elementti, jonka indeksi on 1
object.method
- objektimenetelmän  kutsuminen

  • Työn nopeuttamiseksi mallipohjat kootaan ensimmäisen käsittelyn aikana helmikomentosarjaksi ja tallennetaan asetuksista riippuen levylle tai muistiin. Tämän ansiosta moottorin nopeus on erittäin korkea ja lähellä puhdasta Perlia.
  • Sallii useiden mallien käyttää yleisiä tietoja: asetuksia, muuttujia, vakioita, funktioita ja niin edelleen.
  • Edistyksellinen järjestelmä lisäosien ja suodattimien kirjoittamiseen tekee omien laajennuksien/suodattimien kirjoittamisesta helppoa tai useiden olemassa olevien (toimitetaan Template Toolkit -työkalupakin mukana).
  • Voit lisätä "raa'an" Pearlin malleihin.
  • Lohkot voivat olla joko erillisiä tiedostoja tai ulkoisen tai nykyisen tiedoston sisällä määritettyjä lohkoja.
  • Toisesta versiosta ilmestynyt innovaatio - "näkymät" (näkymät) antaa sinun luoda malleja oliolähtöisellä lähestymistavalla.
  • Voi käsitellä XML -tiedostoja ja muuntaa ne HTML -muotoon , mikä tarjoaa vaihtoehdon XSLT :lle .
  • Toimitus sisältää apuohjelman komentosarjoja, joiden avulla voidaan luoda tarvittava joukko HTML-sivuja mielivaltaisista mallitiedostoista.
  • Hyvä dokumentaatio, jota monet pitävät Pearl-kirjastojen dokumentaation "kultastandardina".

Täydellinen luettelo Template Toolkit -ominaisuuksista on hyvin pitkä. Lisätietoja löytyy dokumentaatiosta, joka löytyy sivun alalaidasta olevista linkeistä.

Haitat

Koska Perlissä on erityyppisiä muuttujia ja Template Toolkitissa niitä kutsutaan kaikkia samalla tavalla, syntyy epäselvyyksiä.

Hajautusobjektien ja taulukkoobjektien kanssa työskentelyssä on ominaisuuksia:

Kun yrität kulkea taulukkoobjektin läpi FOREACHin kautta, käy ilmi, että luettelossa on vain yksi elementti - itse objekti.

Ja kun käytetään elementtiä arrayobj.$index , jossa indeksi  on vaaditun elementin indeksi, Template Toolkit yrittää kutsua menetelmää tällä nimellä. Ja menetelmiä, joiden nimi on 0, 7, 12 jne., ei yleensä ole ohjelmointikielissä.

Näiden ongelmien ratkaisemiseksi sinun on lisättävä as_list () -metodi luokkakoodiin - tätä Template Tookit kutsuu käytettäessä FOREACHia.

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

Tämän koodin tarkoitus on, että itse objekti otetaan, muutetaan tavalliseksi taulukoksi ja muunnetaan välittömästi taulukkoviittaukseksi - mitä FOREACHille tarvitaan.

Miten as_list() auttaa valitsemaan tiettyjä elementtejä objektista?

aref = aref_objekti . as_list (); aref .0 ; aref .1 ;

Ongelmia aiheuttaa AUTOLOAD-funktion läsnäolo luokassa:

  1. se sieppaa kaikki Template Toolkitin virtuaalisten menetelmien kutsut
  2. koska Template Toolkit yrittää ensin löytää määritetyn nimen objektin menetelmän, ja vain jos se epäonnistuu - löytää samannimisen hash-avaimen, tulee selväksi, että AUTOLOAD sieppaa myös kaikki kutsut hash-avaimiin

Toinen ongelma voidaan ratkaista seuraavasti:

sub AUTOLOAD { oma ( $ali_nimi ) = $AUTOLOAD =~ /([^:]+)$/ ; #Etsi pyydetyn menetelmän nimi if ( olemassa $_ [ 0 ]{ $sub_name }) { #Jos objektilla on avain nimeltä $sub_name, palauta $_ [ 0 ]{ $sub_name } #then palauta se } }

Vihjeitä

Siellä on taulukko aref ja muuttuja ix. Haluamme tulostaa taulukkoelementin kohdassa ix määritetyllä indeksillä.

Tämä olisi väärin:

aref . ix

Tässä tapauksessa menetelmää ix yritetään kutsua.

Ja tämä on oikein:

aref . $ix

Dollarimerkkiä $ käytetään korvaamaan muuttujan arvo lausekkeeksi.

Muistiinpanot

Vaikka Template Tookitia pidetään "kevyenä" mallikirjastona, edistynyt syntaksi ja suuri joukko lisäominaisuuksia osoittavat, että "raskassarja" on painottunut.

Vaikka mallia kutsutaan prosessoitavaksi perl-komentosarjasta, on mahdollista upottaa Template Toolkit -komennot suoraan tavallisten HTML-sivujen koodiin, joita käyttäjät pyytävät suoraan. Tätä varten sinun on asennettava Apache::Template-moduuli ja tehtävä pieni konfiguraatio Apache-palvelimesta.

Tekijät

Kirjaston luoja Andy Wardley . Voit ladata kirjaston uusimman version (Template-Toolkit-N.NN.tar.gz) CPANista . Katso linkit resursseihin alla.

Linkit

Ulkoiset resurssit

Windowsia käyttävät kehittäjät voivat ladata all-in-one-arkiston, joka sisältää Apache 2:n, Perl 5.x:n, mod perl 1.99:n ja monia hyödyllisiä kirjastoja, jotka eivät sisälly Perlin vakiojakeluun, kuten Template Toolkit 2:n ja Apache: -mallin. Arkisto on täällä: ftp://theoryx5.uwinnipeg.ca/pub/CPAN  (linkki ei saatavilla) .

Perl-mallikirjastot

  • Kevyt, MVC
    • Mallin työkalupakki
    • HTML::Malli
    • Teksti:: Malli
    • CGI::FastTemplate
  • Sovelluskehitysjärjestelmät
    • Embperl
    • Apache::ASP
    • HTML::Mason