Facet Template Engine — Developer Guide
Facet is the core rendering engine of FaceFlow.
Facet-ontwikkelaarsdocumentatie
Facet is de templatelayer die FaceFlow gebruikt voor dynamische weergave.
Het biedt technische gebruikers een gecontroleerde manier om waarden weer te geven, herbruikbare sjabloonfragmenten samen te stellen, met lussen en voorwaarden te werken, en dynamische weergavelogica binnen PageFace op te bouwen.
Waar Facet Voor Wordt Gebruikt
- component-sjablonen
- variabele-sjablonen
- dynamische lijstuitvoer
- renderen van gedeelde inhoud
- contextafhankelijke paginaweergave
Facet is niet het hele FaceFlow-systeem. Het is de render-taal binnen dat systeem. FaceFlow definieert de objecten en contracten. Facet definieert hoe die objecten veilig dynamische output weergeven.
Belangrijkste Mogelijkheden
Technische gebruikers vertrouwen doorgaans op Facet voor:
- geëscapte en ruwe uitvoer
- voorwaardelijke blokken en lussen
- pagina- en query-bewuste weergave
- filterketens en formattering
- invoegen van variabelen
- veilige sjabloonsamenstelling binnen herbruikbare objecten
Facet versus FaceFlow
Houd deze grens duidelijk:
- FaceFlow definieert objecten zoals Pages, Components, Variables, Lists, Forms, en Reviews
- Facet definieert hoe die objecten dynamische output renderen
Als een technische gebruiker besluit welk object te maken, bevindt diegene zich in het FaceFlow-ontwerpgebied.
Als ze beslissen hoe een bestaand object velden, condities en lussen moet weergeven, bevinden ze zich in het Facet-domein.
Waar het voorkomt
Facet komt vaak voor in:
- HTML-sjablonen van Components
- Variabele-sjablonen
- lijstitem-sjablonen
- kleinere dynamische fragmenten die runtime-context nodig hebben
Een eenvoudig voorbeeld:
<section class="hero">
<h1>{{ title }}</h1>
{{#if summary}}
<p>{{ summary }}</p>
{{/if}}
[[sales-contact-badge]]
</section>Dit voorbeeld toont het meest gangbare mentale model:
- FaceFlow-object levert het contract
- Facet levert de renderlogica
Wat Facet Niet Zou Moeten Doen
Facet is krachtig, maar het mag geen vervanging worden voor goede objectmodellering.
Gebruik Facet niet om:
- zwakke inhoudsstructuur te verbergen achter sjabloontrucs
- één sjabloon om te vormen tot een bedrijfsworkflow-engine
- Lists te vervangen door handgeschreven archieflogica wanneer het probleem eigenlijk query-gedreven inhoud is
- een groot bewerkbaar schema te simuleren dat een Component zou moeten zijn
Hoe Facet te Leren
Volg dit leespad:
- begin met Template Syntax
- ga verder naar Reference
- keer terug naar het FaceFlow-object dat eigenaar is van het sjabloon dat u bewerkt
Die volgorde werkt omdat syntaxis eerst komt, diepere patronen daarna, en object-specifieke toepassing als laatste.
Veelvoorkomende Toepassingen
Technische gebruikers grijpen doorgaans naar Facet wanneer ze moeten:
- optionele velden netjes tonen
- herhaalde inhoud itereren
- pagina-bewuste waarden formatteren
- herbruikbare Variables insluiten
- archive- en lijst-sjablonen bouwen zonder ruwe platformcode
Veelgemaakte Fouten
Technische gebruikers lopen het vaakst tegen problemen aan wanneer ze:
- te veel logica in één sjabloon duwen
- een herhaald fragment behandelen als gekopieerde markup in plaats van een Variable
- conditionals gebruiken om te compenseren voor een onduidelijk veldmodel
- een dynamisch archief bouwen in een Component wanneer het een List zou moeten zijn
- vergeten dat leesbaarheid onderdeel is van sjabloonkwaliteit
Ontwerprichtlijnen
- houd sjablonen leesbaar
- houd bedrijfslogica oppervlakkig
- geef de voorkeur aan sterke objectmodellering boven slimme sjabloontrucs
- gebruik Variables voor herhaalde fragmenten in plaats van markup te kopiëren
- gebruik Lists wanneer het probleem dynamische contentselectie is, niet alleen weergave
Beslissingshulp
Gebruik Facet wanneer de vraag klinkt als:
- "hoe moet dit veld worden weergegeven?"
- "moet deze sectie alleen zichtbaar zijn wanneer data bestaat?"
- "hoe kan ik door deze items itereren?"
- "hoe hergebruik ik dit kleine fragment?"
Stop niet bij Facet wanneer de vraag eigenlijk is:
- "moet dit een Component of een Variable zijn?"
- "moet deze inhoud een List zijn?"
- "hoort dit in de Layout of op de Page?"