Template Engine

Template Engine
QS-Informatik

Dieser Artikel wurde aufgrund von inhaltlichen Mängeln auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen und beteilige dich an der Diskussion! (+)

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.

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.

In den Templates einer Template Engine sollte kein Programm-Code enthalten sein. Kontrollstrukturen (wie IF) sind allerdings oft in Templates möglich und verbreitet.

Typische Dateitypen, die verarbeitet werden, sind HTML, Text (ASCII oder Unicode), XML oder TeX.

Inhaltsverzeichnis

Konzept

Das Konzept ähnelt den Seriendruckfeldern bei einer Textverarbeitung: In einem Dokument werden Seriendruckfelder (Platzhalter) eingefügt, etwa Name – Straße – Ort. Bei Template Engines werden diese Seriendruckfelder Templatevariablen genannt. Wenn aus dem Dokument dann mehrere Serienbriefe erzeugt werden, steht anstatt der Templatevariablen name ein realer Name wie „Erika Mustermann“ im fertigen Serienbrief.

Das Dokument muss nur einmal geschrieben und formatiert werden. Alle Änderungen wirken sich automatisch auf zukünftig erstellte Serienbriefe aus. Das ist bei Template Engines genauso; weitere Parallelen zu Serienbrief-Vorlagen sind:

  • Die Daten kommen aus einer externen Quelle (Datenbank, Tabellenkalkulation, etc.).
  • Um die Daten zu ändern, muss das Template nicht verändert werden, und umgekehrt.
  • Das Template kann wiederverwendet werden.

Abgrenzung

Template 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. Java: JSP; VBScript u. a.: ASP).

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

  • Programm-Code (PHP, Python, Perl, etc.) wird vom Markup (HTML) getrennt
  • Designer und Programmierer können gleichzeitig an einem Projekt arbeiten
  • WYSIWYG-Editoren können verwendet werden

Nachteile

Template 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.

Sprachabhängige Template-Engines

Die Masse von Template Engines ist enorm. Eigenentwicklungen sind an der Tagesordnung. XSLT ist für alle Template Engines eine Konkurrenz. Bei PHP ist Smarty weit verbreitet, hat aber die Eigenentwicklungen und andere Template Engines nicht vom Markt verdrängt.

PHP Template Engines

PHP selbst ist bereits so entworfen, dass man programmiersprachliche Konstrukte mit der textuellen Ausgabe über Platzhalter bzw. gekennzeichnete Bereiche mischen kann.

<h1><?php echo $body_text; ?></h1>
 
<?php foreach($test_array as $key => $value) : ?>
   <p>Schlüssel: <?php echo $key; ?> - Wert: <?php echo $value; ?></p>
<?php endforeach; ?>

Der Vorteil liegt in der einfachen Verwendung. Es muss keine zusätzliche Bibliothek installiert werden, auch ist diese Vorgehensweise am für PHP-erfahrene Entwickler am leichtesten zu verstehen und folgt dem Prinzip der geringsten Überraschung. Die Verwendung einer gesonderten Template Engine für PHP ist daher nicht erforderlich. Dennoch existieren besonders für PHP eine sehr große Zahl von Engines:

Beispiel

Um 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>

Perl Template Engines

Python Template Engines

Es gibt viele Template Engines unter Python. Beispiele sind Django oder TurboGears. Eine gute Übersicht (mit URI und Code-Beispielen) findet man im deutschen PythonWiki. Eine umfangreichere Liste, dafür weniger erklärt findet man im englischen Wiki zu Python.

Anwendungsbeispiel

# -*- coding: utf-8 -*-
# Modul Template muss importiert werden
from string import Template
# Vorlage zum Lesen öffnen, Inhalt übergeben und Datei schließen
vorlage = open('vorlage.txt', 'r')
vorl_inhalt = vorlage.read()
vorlage.close()
# Den Inhalt als Template behandeln
template = Template(vorl_inhalt)
# Ersetzungen nach folgendem Schema festlegen
ersetzungen = { 'Name' : 'Hans Meier', 'Strasse' : 'Bahnhofstr. 69', 'Ort' : '12345 Foobarhausen' }
# Ersetzungen vornehmen
ersetzen = template.substitute(ersetzungen)
# Vorgang in Datei schreiben
outfile = open('ausgabe.txt', 'w')
outfile.write(ersetzen)
outfile.close()

vorlage.txt:

Name: ${Name}
Strasse: ${Strasse}
Ort: ${Ort}

ausgabe.txt:

Name: Hans Meier
Strasse: Bahnhofstr. 69
Ort: 12345 Foobarhausen

C/C++Template Engines

Sonstiges

Literatur

  • Karsten Wendland: Der Template-Zyklus. Web-Templates im Spannungsfeld von schöpferischem Gestalten und einschränkender Zumutung, Aachen: 2006, ISBN 3-83225-285-1

Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Template engine — may refer to any of the following:* For all uses in generating output from templates, see template processor * For use exclusively in a web template system, see template engine (web) * For use exclusively in word processing applications, see mail …   Wikipedia

  • Template engine (web) — A (web) template engine is software that is designed to process web templates and content information to produce output web documents. It runs in the context of a template system.pecific types of template engines Template engine is ordinarily… …   Wikipedia

  • Smarty Template Engine — Smarty Entwickler: Monte Ohrt, Andrei Zmievski Aktuelle Version: 2.6.22 (17. Dezember 2008) Betriebssystem: plattformunabhängig Pr …   Deutsch Wikipedia

  • Chip Template Engine — Infobox Software name = Chip Template Engine developer = Mike A. Leonetti latest release version = 0.31 latest release date = 16th August 2006 genre = Template engine license = LGPL website = [http://code.divineaspirations.net/chip… …   Wikipedia

  • XML template engine — A XML template engine (or XML template processor ) is a specialized template processor for XML input and/or output, working in a XML template system context. There are two main types: * XML suite standards compliant engines: ** XSLT engines ,… …   Wikipedia

  • Jinja (Template engine) — Jinja is a template engine for the Python programming language. It s similar to the Django template engine but provides python like expressions while ensuring that the templates are evaluated in a sandbox. It s a text based template language thus …   Wikipedia

  • Template — may mean:*a stencil, pattern or overlay used in graphic arts (drawing, painting, etc) and sewing to replicate letters, shapes or designs *a pre developed page layout in electronic or paper media used to create new pages from the same design,… …   Wikipedia

  • Template-Toolkit — Entwickler Andy Wardley Aktuelle Version 2.22 (21. Juli 2009) Betriebssystem Linux, Mac OS X, Windows, u. a. Kategorie Programm und Bibliothekssammlun …   Deutsch Wikipedia

  • Template processor — A template processor (also known as a template engine or a template parser )is software or a software component that is designed to combine one or more templates with a data model to produceone or more result documents.cite book last = Niemeyer… …   Wikipedia

  • Template (software engineering) — The term template, when used in the context of software engineeringhas various technical specifications, but is generally identified asany processing element that can be combined with a data model andprocessed by a template engine to produce a… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”