Templategefummel ist eine praktische Angelegenheit. Perl's Problem viele Jahre war das Fehlen einer TE (Templating Engine) und so hab ich mir das Teil selbst gebaut wie viele andere Perlkollegen. Nebenher machte ich Erfahrungen mit sehr umfangreichen TE's wie z.B. Perl's Template::Toolkit (TT) und kam immer wieder zu dem Schluss, dass in der Praxis solch Umfang wie das TT bietet, unsinnig ist. In Fakt kochte da jeder Designer sein eigenes Süppchen und exportierte Stück für Stück die Programmlogik ins Template -- Ein Horror für den CTO (Onion Pattern).
Die Praxis besteht darin, umfangreiche Seiten Beispiel über einfache Templates abzuwickeln, d.h., Loops sollte eine TE schon können:
# AJAX Response erzeugen
$self->{CONTENT} = XR::xr(
q(
<h2>%title%</h2>
<dl>
%loop_slice%
<dt><strong> %title% </strong></dt>
<dd> %descr% </dd>
%endloop%
</dl>
),
{
title => $hmap->{$url},
slice => $slice
}
);
// Response ins DOM pflanzen
<div id="pro"></div>
<script>
function pro(url){
throbber(true);
var xhr = new XMLHttpRequest();
xhr.open('GET','%url%?url='+url);
xhr.onload = function(){
throbber(false);
if(this.status != 200) return pretext(this.response);
$('#pro').html(this.response);
}
xhr.send();
}
Wobei es eigentlich völlig Wurst ist, ob die Einzeldaten serverseitig ins Template gerendert oder als JSON gesendet werden, wenn Templates für Perl wie JS identisch aufgebaut sind. Mehr dazu auf meinen FW-Seiten und ja, den CODE für die TE hab ich da auch veröffentlicht -- Jahrelang bewährt ;)