Eine Template Engine (von engl. Vorlage und Maschine) ist eine Software, die eine Datei (das Template) verarbeitet, und bestimmte Platzhalter darin mit jeweils aktuellen Inhalten füllt. Die Bezeichnungen Templateklasse und Templatesystem werden oft als Synonym für eine Template Engine verwendet.
Ziel von Template Engines ist das Zusammenführen von statischen und dynamischen Daten. Klassentemplates in der C++-Programmierung sind dagegen nicht mit Template Engines vergleichbar, weil sie eine vom Datentyp unabhängige Programmierung ermöglichen und ganze Klassen enthalten.
Typische Dateitypen, die verarbeitet werden, sind HTML, Text (ASCII oder Unicode), XML oder TeX.
Konzept und Funktionsweise
BearbeitenTemplate Engines führen Inhalte zusammen, wie zum Beispiel bei modernen Webseiten, die auf ein Content Management System setzten, aber sie werden auch im privaten Bereich (Serienbriefe) verwendet. Um eine Template Engine zu verwenden benötigt man zwei Dinge. Die Quelle, die die Daten sammelt und das Template, welches Platzhalter für die Daten enthält. Vor der Ausgabe werden die Platzhalter, auch Templatevariablen genannt, durch die Daten aus der Quelle ersetzt. Bei einem Serienbrief werden die Daten (Erika Mustermann, Musterstraße 33, Musterstadt, 123456) vor der Ausgabe in die Platzhalter (Name, Straße, Stadt, PLZ) eingesetzt. Neben dem Druck werden Template Engines auch für E-mails, Fax, Druckwaren, Webseiten verwendet.
Durch die Trennung von Daten bzw. Programmlogik und Template können beide unabhängig bearbeitet oder ausgetauscht werden. Das Dokument muss nur einmal geschrieben und formatiert werden. Alle Änderungen wirken sich automatisch auf zukünftig erstellte Serienbriefe aus.
Abgrenzung
BearbeitenTemplate Engines werden häufig von Programmierern eingesetzt, um im Kontext von Web-Applikationen Programm-Code (einer Programmiersprache) vom Design zu trennen. Genauso wird von den Herstellern mancher Template Engines angeführt, Templates und Engines sollen durch die Trennung der Programmierlogik vom Design das Skript von HTML-Code befreien und damit übersichtlicher machen.
Demgegenüber steht der ursprüngliche Gedanke der Template Engines: Sie sollen statischen Text und dynamische Inhalte möglichst effizient miteinander verknüpfen. Oft sind Template Engines deshalb gerade in Programmiersprachen anzutreffen, deren Syntax eine solche Mischung nicht direkt unterstützt (z.B. JavaServer Pages für Java, ASP für VBScript).
Für eine echte Trennung der Darstellung von den Datenmodellen und den Logikkomponenten sind Template Engines dagegen ungeeignet und es sind zusätzliche Konzepte wie z.B. Model View Controller notwendig.
Vorteile
Bearbeiten- Programm-Code (PHP, Python, Perl, etc.) wird vom Markup (HTML) getrennt
- Caching wird u.u. unterstützt
- Designer und Programmierer können gleichzeitig an einem Projekt arbeiten
- WYSIWYG-Editoren können verwendet werden
Nachteile
BearbeitenTemplate Engines
- erzeugen immer zusätzlichen Overhead.
- müssen im Gebrauch erlernt werden. Neben der neuen Syntax sind auch oft grundlegende Kenntnisse der objektorientierten Programmierung Voraussetzung.
- sind auf eine textuelle Ausgabe beschränkt.
Beispiel
BearbeitenUm eine Template Engine zu verwenden, benötigt man die Template-Datei (in der die auszugebenen Daten enthalten sind) sowie das Script, welches das Template lädt und die Platzhalter mit Werten füllt.
Das Template könnte so aussehen:
<body>
<p>Hallo, {name}!</p>
</body>
Und so könnte eine Wertzuweisung vom Script aus aussehen:
$template->assign('name', 'Erika Mustermann');
Das Ergebnis:
<body>
<p>Hallo, Erika Mustermann!</p>
</body>
Einzelnachweise
Bearbeiten
Literatur
Bearbeiten- Karsten Wendland: Der Template-Zyklus. Web-Templates im Spannungsfeld von schöpferischem Gestalten und einschränkender Zumutung, Aachen: 2006, ISBN 3-83225-285-1