Templating mit jQuery

Die von Microsoft (Jehova!) gesponserte Template-Engine für jQuery ist endlich da. Den meisten wird sich an dieser Stelle die Frage stellen, was man im Javascript wohl mit einem Template anfangen will, aber die Antwort ist ziemlich einfach: Wenn man mit jQuery einen Webservice direkt anspricht und dessen Antwort als HTML auf einer Seite ausgeben will, ist dies in der Vergangenheit in einer regelrechten String-Ausgabe-Hölle geendet. Mit der Template-Engine kann ich zum Beispiel wie mit Smarty in PHP ein Template definieren, dass dann benutzt wird, um das Ergebnis eines JSON-Calls auszugeben.

Ein entsprechendes Tutorial hat nettuts zur Verfügung gestellt. Das Template ist dabei recht intuitiv gehalten:

<script id="tweets" type="text/x-jquery-tmpl">
	<li>
 
		<h2> ${username} </h2>
		<p> ${tweet} </p>
		{{if geo}}
		<span> ${geo} </span>
		{{/if}}
	</li>
</script>

Den entsprechenden Aufruf des Ajax-Webservice sollte klar sein, in der success-function werden lediglich die Variablen für das Template zugewiesen. Was bei nettuts nicht ganz klar wird, ist das die Template-Engine das Template nimmt, und in eine bereits bestehende HTML-Struktur nachträglich einfügt. Das Template muss zwar in der Seite stehen, wird aber an der Stelle, wo es eingefügt ist, nicht angezeigt. Ferner ist es etwas unglücklich das dort das Template und das HTML fast die gleiche IDs verwendet worden sind.

Entsprechend erklärt sich die folgende Verbindung zwischen Template und Code:

$('#tweets').tmpl(twitter).appendTo('#twitter');

Das #tweets bezieht sich auf das Template, nicht auf die HTML-Struktur! Das Template wird dann auf das Array twitter angewendet, das von dem JSON-Calls zur Verfügung gestellt wird. Das each hat man sich an dieser Stelle gespart, das Template wird automatisch 1..n angewendet. Zu guter Letzt kommt mittels appendTo der HTML-Container, in, dass das Template eingefügt werden soll.

Alles in allem ein sehr einfacher und intuitiver Konstrukt, wenn man es erst einmal durchschaut hat:

1)      ID des Templates

2)      Name des Arrays das 1..n angewendet wird

3)      ID des HTML-Containers, in dass das Template eingefügt werden soll

Denkt dran, dass ihr auch den Fall abfangen müsst, dass der JSON-Calls keine Daten liefert.

Ähnliche Beiträge

Mein neuer Food-Blog Wer mir auf Twitter folgt weiß ja, das ich des öfteren grille (ok, fast täglich) und die Not das in geeignete Bahnen zu lenken wurde immer größer. Was...
Eclipse für Webworker Da mich Aptana heute einmal zu viel geärgert hat, habe ich es demonstrativ von der Festplatte gelöscht! Schon beim Start kam die erste Exception und e...
Ich werde Freiberufler Für alle die es noch nicht mitbekommen haben, dieses Blog ziert nun ein nettes Passfoto von mir :) Jede Seite die sich mit Blogs beschäftigt empfiehlt...
Nun auch bei Delicious Aber zunächst noch etwas in eigener Sache ;) Wer sich wundert, wo ich stecke: beim Zahnarzt! ;) Deshalb ist hier diese und nächste Woche nur relativ w...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.