Wie wird mit der Code-Duplizierung beim natürlichen Templaten (z. B. Thymeleaf) umgegangen?

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 ich

schreiben %Vor%

Meine "Layout" -Tagdatei enthält alle Header-Tags (Titel, Link zu Stylesheets, ...), das Menü und fügt den Text und den Text an der richtigen Stelle ein. Ich muss nichts über Stylesheet-Menüs oder ähnliches wissen, wenn ich mein HTML-Fragment entwerfe.

Dies steht im Gegensatz zu der Idee von Thymeleaf, die mich ermutigt, vollständige HTML-Seiten zu erstellen (einschließlich eines Beispielmenüs und aller Überschriften). Während das Handbuch von Thymeleaf weiterhin hervorhebt, wie groß das ist, handelt es sich nie um doppelte Code-Bedenken:

  • Ich habe eine Vorlage, die ein Menü generiert, und alle meine anderen Vorlagen (können viele sein) enthalten ein kopiertes & eingefügtes Dummy-Menü, so dass ich die Vorlage in einem Browser ohne den serverseitigen Generierungsmechanismus sehen 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 das neue Dummy-Menü kopieren und in 100 Vorlagen einfügen.
  • Auch wenn ich mich dazu 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 sie kaputt gemacht habe (könnte so einfach sein wie ein falsch geschriebener Variablenname). Daher muss ich die Ausgabe trotzdem mit der aktuellen Generation testen.

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

    
yankee 01.03.2014, 12:55
quelle

1 Antwort

7

Natürliche Vorlagen sind nur eine Option in Thymeleaf. Wie Sie hier Ссылка lesen können, gibt es viele Möglichkeiten, einschließlich eines hierarchischen Layout-Ansatzes wie dem, den Sie bevorzugen (ich empfehle Sie sehen sich den Layout-Dialekt an.

Natürliche Vorlagen sind jedoch die bevorzugte und am meisten erklärte Layout-Option, weil Thymeleaf von Grund auf so konzipiert wurde, dass Sie statische Prototypen erstellen können (im Gegensatz zu den meisten anderen Template-Engines). Aber es zwingt dich nicht dazu.

Also ... wie werden Natural Templates in der realen Welt angewendet um zu vermeiden, dass Code Duplikation 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 ihrer Anwendungsvorlagen, nur diejenigen, die eher am Entwurfsprozess teilnehmen - Austausch mit Designern, mit Kunden ...-, und einfach nicht die Kopf- und Fußzeilen-Duplizierung in den restlichen Vorlagen der Anwendung anwenden, was ihre Erstellung und Wartung viel einfacher macht.

Auf diese Weise können Sie das Beste aus beiden Welten haben: eine Möglichkeit, vollständig anzeigbare Seiten zwischen Programmierern, Designern und Kunden auszutauschen, für die Seiten, die wirklich relevant sind; und auch eine reduzierte Menge an doppeltem Code.

Dank Bibliotheken wie Thymol (die in dem oben verlinkten Artikel referenziert werden) können Sie sogar Code-Duplikation vollständig vermeiden, indem Sie Ihre Fragmente dynamisch über JavaScript einfügen, wenn Sie Ihre Vorlagen direkt in Ihrem Browser öffnen, ohne die Anwendung auszuführen.

Hoffe, das hilft.

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

    
Daniel Fernández 02.03.2014, 13:31
quelle

Tags und Links