Facet Template Engine — Developer Guide
Facet is the core rendering engine of FaceFlow.
Facet Entwicklerdokumentation
Facet ist die Template-Schicht, die von FaceFlow für dynamisches Rendering verwendet wird.
Sie bietet technischen Anwendern eine kontrollierte Möglichkeit, Werte auszugeben, wiederverwendbare Template-Fragmente zu komponieren, mit Schleifen und Bedingungen zu arbeiten und dynamische Anzeige-Logik innerhalb von PageFace zu erstellen.
Wofür Facet verwendet wird
- Komponenten-Vorlagen
- Variablen-Vorlagen
- dynamische Listen-Ausgabe
- gemeinsames Rendern von Inhalten
- kontextbezogene Seiten-Ausgabe
Facet ist nicht das gesamte FaceFlow-System. Es ist die Render-Sprache darin. FaceFlow definiert die Objekte und Verträge. Facet definiert, wie diese Objekte dynamische Ausgabe sicher rendern.
Kernfunktionen
Technische Anwender verlassen sich typischerweise auf Facet für:
- escaped und raw Ausgabe
- Conditionals und Loop-Blöcke
- seitenbewusstes und abfragebewusstes Rendering
- Filterketten und Formatierung
- Einbetten von Variablen
- sichere Template-Komposition innerhalb wiederverwendbarer Objekte
Facet vs FaceFlow
Halten Sie diese Abgrenzung deutlich:
- FaceFlow definiert Objekte wie Seiten, Komponenten, Variablen, Listen, Formulare und Reviews
- Facet definiert, wie diese Objekte dynamische Ausgabe rendern
Wenn ein technischer Anwender entscheidet, welches Objekt erstellt werden soll, befindet er sich im FaceFlow-Designbereich.
Wenn er entscheidet, wie ein vorhandenes Objekt Felder, Bedingungen und Schleifen rendern soll, befindet er sich im Facet-Bereich.
Wo es erscheint
Facet erscheint häufig in:
- Komponenten-HTML-Vorlagen
- Variablen-Vorlagen
- Listeneintrag-Vorlagen
- kleineren dynamischen Fragmenten, die Laufzeitkontext benötigen
Ein einfaches Beispiel:
<section class="hero">
<h1>{{ title }}</h1>
{{#if summary}}
<p>{{ summary }}</p>
{{/if}}
[[sales-contact-badge]]
</section>Dieses Beispiel zeigt das gebräuchlichste Denkmodell:
- FaceFlow-Objekt liefert den Vertrag
- Facet liefert die Rendering-Logik
Was Facet nicht tun sollte
Facet ist mächtig, aber es sollte nicht zum Ersatz für gutes Objektmodellieren werden.
Verwenden Sie Facet nicht, um:
- schwache Inhaltsstruktur hinter Template-Tricks zu verbergen
- eine Vorlage in eine Business-Workflow-Engine zu verwandeln
- Listen durch handgeschriebene Archivlogik zu ersetzen, wenn das Problem wirklich abfragegetriebene Inhalte betrifft
- ein großes editierbares Schema zu simulieren, das eigentlich eine Komponente sein sollte
So lernen Sie Facet
Nutzen Sie diese Lesereihenfolge:
- beginnen Sie mit Template Syntax
- fahren Sie fort mit Reference
- kehren Sie dann zum FaceFlow-Objekt zurück, dem die Vorlage gehört, die Sie bearbeiten
Diese Reihenfolge funktioniert, weil zuerst die Syntax kommt, danach tiefere Muster und zuletzt die objektspezifische Anwendung.
Häufige Anwendungsfälle
Technische Anwender greifen typischerweise zu Facet, wenn sie:
- optionale Felder sauber anzeigen müssen
- durch wiederholte Inhalte iterieren müssen
- seitenbewusste Werte formatieren müssen
- wiederverwendbare Variablen einbetten möchten
- Archiv- und Listenvorlagen ohne rohe Plattformlogik erstellen möchten
Häufige Fehler
Technische Anwender geraten am häufigsten in Schwierigkeiten, wenn sie:
- zu viel Logik in eine Vorlage drücken
- ein wiederholtes Fragment wie kopiertes Markup behandeln anstatt eine Variable zu verwenden
- Conditionals verwenden, um ein unklar definiertes Feldmodell zu kompensieren
- ein dynamisches Archiv in einer Komponente bauen, wenn es eine Liste sein sollte
- vergessen, dass Lesbarkeit Teil der Vorlagenqualität ist
Design-Richtlinien
- halten Sie Vorlagen lesbar
- halten Sie Business-Logik flach
- bevorzugen Sie starkes Objektmodell gegenüber cleveren Template-Tricks
- verwenden Sie Variablen für wiederholte Fragmente anstatt Markup zu kopieren
- verwenden Sie Listen, wenn das Problem dynamische Inhaltssauswahl ist, nicht nur die Anzeige
Entscheidungshilfe
Verwenden Sie Facet, wenn die Frage lautet:
- "Wie sollte dieses Feld gerendert werden?"
- "Soll dieser Abschnitt nur angezeigt werden, wenn Daten vorhanden sind?"
- "Wie iteriere ich durch diese Elemente?"
- "Wie kann ich dieses kleine Fragment wiederverwenden?"
Hören Sie mit Facet nicht auf, wenn die Frage tatsächlich ist:
- "Soll das eine Komponente oder eine Variable sein?"
- "Soll dieser Inhalt eine Liste sein?"
- "Gehört das ins Layout oder auf die Seite?"