2014-03-01 5 views
8

Thymeleaf legt großen Wert auf "natürliches Templating", was bedeutet, dass alle Vorlagen bereits gültige XHTML-Dateien sind. Ich dachte immer, dass das ein großer Schritt vorwärts ist, dass ich Fragmente in meinen Vorlagen erzeugen kann, z. in JSP würde ichWie behandelt man Code-Duplikation beim natürlichen Templaten (z. B. Thymeleaf)?

<tagfile:layout title="MyPageTitle"> 
    <jsp:body> 
    Main content goes here 
    </jsp:body> 
</tagfile:layout> 

Meine an der richtigen Stelle „Layout“ -Tagfile enthält alle Header-Tags (Titel, Link zu Stylesheets, ...), das Menü und justs Einsätze Titeltext und Körper schreiben . Ich muss nichts über Stylesheet-Menüs oder ähnliches wissen, wenn ich mein HTML-Layout entwerfe.

Dies steht im Gegensatz zu der Idee von Thymeleaf, die mich ermutigt, vollständige HTML-Seiten (einschließlich eines Beispielmenüs und aller Überschriften) zu erstellen. Während die Anleitung Thymeleaf betonen weiterhin, wie groß das ist, fügt er nie mit Doppel Code betrifft:

  • Ich habe eine Vorlage, die ein Menü erzeugt und alle meine anderen Vorlagen eine Kopie enthalten (könnte viele) & Einfügen Dummy-Menü nur so, dass ich die Vorlage in einem Browser ohne die serverseitige Generation Mechanismus anzeigen kann. Wenn ich 100 Vorlagen habe, bedeutet das, dass genau das gleiche Dummy-Menü 100x (in jeder Vorlage) existiert. Wenn ich das Aussehen des Menüs ändere, ist es nicht mit dem Erstellen eines neuen Dummy-Menüs fertig, aber ich muss & kopieren das neue Dummy-Menü in 100 Vorlagen einfügen.
  • Auch wenn ich mich entscheide, etwas so einfaches wie das Umbenennen meiner CSS-Datei zu tun, muss ich auch alle meine Vorlagen berühren.
  • Es besteht immer die Gefahr, dass meine Vorlage in meinem Browser gut aussieht, aber die generierte Ausgabe ist kaputt, weil ... nun ... ich es kaputt gemacht habe (könnte so einfach wie ein falsch geschriebener Variablenname sein). Daher muss ich die Ausgabe trotzdem mit der aktuellen Generation testen.

Habe ich etwas falsch verstanden? Oder ist das tatsächlich ein Kompromiss? Wie minimieren Sie die Auswirkungen der Code-Duplizierung?

Antwort

7

Natürliche Vorlagen sind nur eine Option in Thymeleaf. Wie Sie hier lesen können http://www.thymeleaf.org/layouts.html gibt es viele Optionen, einschließlich einer hierarchischen Layout-Ansatz wie der, den Sie bevorzugen (ich empfehle Ihnen, einen Blick auf den Layout-Dialekt zu werfen).

Natürliche Vorlagen sind jedoch die bevorzugte und am meisten erklärte Layout-Option, weil Thymeleaf von Grund auf bis statische Prototyping (im Gegensatz zu den meisten anderen Vorlage-Engines) gedacht wurde. Aber es ist nicht zwingen Sie zu.

Also .. wie werden natürliche Vorlagen in der realen Welt angewendet, um zu vermeiden, dass Code-Duplizierung ein Problem wird? Das hängt von dem Szenario ab, aber ein Muster, das wir oft wiederholen, ist das Erstellen eines vollständigen Dokuments, natürlicher Vorlagen für 3-4 oder vielleicht sogar ein Dutzend der Vorlagen ihrer Anwendung, nur diejenigen, die eher am Entwurfsprozess teilnehmen - Austausch mit Designern, mit Kunden ...-, und einfach nicht die Kopf- und Fußzeilen-Duplizierung in den übrigen Vorlagen der Anwendung anwenden, was ihre Erstellung und Wartung viel einfacher macht.

Auf diese Weise können Sie das Beste aus beiden Welten haben: ein Mittel zum Austausch von vollständig anzeigbaren Seiten zwischen Programmierern, Designern und Kunden für die Seiten, die das wirklich relevant sind; und auch eine reduzierte Menge an dupliziertem Code.

Dank Bibliotheken wie Thymol (im oben verlinkten Artikel verwiesen) können Sie Code-Duplikation sogar komplett vermeiden und Ihre Fragmente dynamisch über JavaScript einfügen, wenn Sie Ihre Vorlagen direkt in Ihrem Browser öffnen, ohne die Anwendung auszuführen .

Hoffe, das hilft.

Disclaimer, nach StackOverflow-Regeln: Ich bin Thymelefs Autor.

Verwandte Themen