Principi di ZPT
medio
Perchè ZPT
Nella costruzione di interfacce utente di tipo XHTML (di un sito, di un'applicazione web generica) spesso devono interagire due diverse figure professionali.
Da un lato abbiamo il designer, che definisce il layout, lo stile e in generale il come vanno presentate all'utente le varie funzioni che gli stiamo fornendo.
Dall'altro abbiamo lo sviluppatore, che alle "pagine" dà vita, collegandole ai dati, alla gestione della sicurezza, e ai servizi che vengono erogati.
Gli strumenti usati dalle due figure sono di tipo diverso, ma per entrambi devono essere capaci di gestire pagine XHTML.
I Principi di Base di ZPT
Zope Page Template cerca di far collaborare sviluppatori e designer sullo stesso file adottando tre princìpi base: vediamoli insieme.
1 - Funzionare con qualsiasi editor XHTML (dreamweaver, textmate, etc.)
Nei linguaggi di templating, di solito, i comandi usati dagli sviluppatori per dare vita alla pagina finale vengono immersi nelle pagine XHTML prodotte dai designer.
Tali comandi, tuttavia, non fanno parte della normale sintassi XHTML. Per questo motivo gli editor dei designer, spesso, non riesco ad aprire i template, dopo che gli sviluppatori ci ha messo mano.
Caso peggiore: quando riescono riescono ad aprire i template manipolati dagli sviluppatori, i designer rovinano facilmente il lavoro fatto, propri perchè l'editor non sa mostrare i comandi aggiunti dagli sviluppatori, che quindi si perdono tra le varie versioni.
ZPT nasce per superare questo problema!
2 - Produrre template fedeli alle pagine finali
Normalmente i designer hanno bisogno di inserire elementi "fantoccio" per valutare l'impatto delle parti che costituiranno la pagina finale, tuttavia tali elementi devono sparire dalla versione renderizzata del template, seppur devono restare nel template, affinchè continui ad essere valido per i designer nel momento in cui dovranno rimetterci mano.
Al contrario, a volte sono gli sviluppatori a dover caricare elementi, utili al template, che però devono essere ignorati dall'editor usato dai designer, pena l'accanimento dei designer nel toglierli di mezzo, tornando a guastare il lavoro degli sviluppatori.
ZPT vuole permettere la creazione di template che siano il più possibile simili alle pagine finali.
3 - Tenere il codice fuori dai template
Questo è un punto valido soprattutto per gli sviluppatori.
Se il linguaggio di templating è troppo potente, gli sviluppatori, per eccessivo "amore di sintesi" (diciamo.. :)), tendono a immergere nel layout del template le logiche (definite a volte "business rules") che dovrebbero essere piuttosto descritte altrove.
ZPT vuole "aiutare" gli sviluppatori a produrre buone applicazioni, e non facilita la generazione di logiche avanzate all'interno dei template:
- Mediante comandi ZPT si possono rimpiazzare interi tag, il loro contenuto, o solo alcuni attributi. Si può ripetere il tag più volte od ometterlo completamente.
- Non si possono creare sottoprocedure o classi, scrivere cicli o test a più vie, o esprimere facilmente algoritmi complessi.
Insomma: la logica deve stare fuori dall'interfaccia!
I Componenti di ZPT
Implementato in Python, Zope Page Template è linguaggio di templating di lungo corso: da lunghi anni sostiene le esigenze più imprevedibili di applicativi versatili e potenti come Plone senza scomporsi.
I principi espressi sopra ispirano l'architettura dei componenti fondamentali della tecnologia ZPT, capace di sfornare pagine XML ben formate (e di conseguenza XHTML).
TAL: Template Attribute Language
L'innovazione principale introdotta dai creatori di ZPT consiste nell'aver spostato i comandi che rendono dinamico il template all'interno dei tag dell'XML, sfruttando un apposito namespace, TAL appunto.
Questo stratagemma da solo ottiene due risultati: fa sì che gli editor XHTML, che normalmente odiano i tag che non conoscono, possano tranquillamente ignorare gli attributi di namespace che non conoscono; inoltre evita che i designer rompano le logiche aggiunte dagli sviluppatori agli elementi visuali, in quanto tali logiche seguono negli spostamenti gli elementi di cui sono attributo.
TALES: TAL Expression Syntax
Per poter aggiungere elementi di programmazione complesse (ma non troppo) si hanno a disposizione una serie di espressioni, capaci di fornire dati alle istruzioni TAL e METAL.
METAL: Macro Expansion TAL
Uno strumento moderno e di prima classe come ZPT non può fare a meno di favorire la modularizzazione e il riutilizzo dei template: METAL è uno strumento di macro preprocessing versatile e potente, degno complemento di TAL e TALES.
