Facet Template Engine — Developer Guide
Facet is the core rendering engine of FaceFlow.
Documentation developpeur Facet
Facet est la couche de templating utilisee par FaceFlow pour le rendu dynamique.
Elle donne aux utilisateurs techniques une maniere controlee de sortir des valeurs, de composer des fragments reutilisables, de travailler avec des boucles et des conditions, et de construire une logique d'affichage dynamique dans PageFace.
A quoi sert Facet
- templates de components
- templates de variables
- rendu dynamique de lists
- rendu de contenu partage
- rendu contextuel de page
Facet n'est pas l'ensemble du systeme FaceFlow. C'est le langage de rendu qu'il contient. FaceFlow definit les objets et les contrats. Facet definit comment ces objets produisent un rendu dynamique de maniere sure.
Capacites principales
Les utilisateurs techniques s'appuient generalement sur Facet pour :
- la sortie echappee et la sortie brute
- les conditions et les blocs de boucle
- le rendu aware de la page et du contexte de requete
- les chaines de filtres et le formatage
- l'embarquement de variables
- la composition sure de templates dans des objets reutilisables
Facet vs FaceFlow
Gardez cette frontiere bien claire :
- FaceFlow definit des objets comme les Pages, Components, Variables, Lists, Forms et Reviews
- Facet definit la maniere dont ces objets rendent une sortie dynamique
Si un utilisateur technique se demande quel objet creer, il est dans le territoire de conception FaceFlow.
S'il se demande comment un objet existant doit rendre des champs, des conditions et des boucles, il est dans le territoire de Facet.
Ou Facet apparait
Facet apparait le plus souvent dans :
- les templates HTML de Components
- les templates de Variables
- les templates d'item de List
- de plus petits fragments dynamiques qui ont besoin d'un contexte runtime
Un exemple simple :
<section class="hero">
<h1>{{ title }}</h1>
{{#if summary}}
<p>{{ summary }}</p>
{{/if}}
[[sales-contact-badge]]
</section>Cet exemple montre le modele mental le plus courant :
- l'objet FaceFlow fournit le contrat
- Facet fournit la logique de rendu
Ce que Facet ne doit pas faire
Facet est puissant, mais il ne doit pas devenir un substitut a une bonne modelisation des objets.
N'utilisez pas Facet pour :
- masquer une mauvaise structure de contenu derriere des astuces de template
- transformer un template en moteur de workflow metier
- remplacer une List par une logique d'archive ecrite a la main lorsque le probleme est reellement pilote par des requetes
- simuler un grand schema editable alors qu'il devrait s'agir d'un Component
Comment apprendre Facet
Suivez de preference ce parcours :
- commencer par Template Syntax
- continuer avec Reference
- revenir ensuite a l'objet FaceFlow auquel appartient le template que vous modifiez
Cet ordre fonctionne bien parce que la syntaxe vient d'abord, les patterns approfondis ensuite, puis l'application specifique a l'objet.
Cas d'usage frequents
Les utilisateurs techniques se tournent generalement vers Facet lorsqu'ils ont besoin de :
- afficher proprement des champs optionnels
- boucler sur un contenu repete
- formater des valeurs contextuelles a la page
- embarquer des variables reutilisables
- construire des templates d'archives et de lists sans code plateforme brut
Erreurs frequentes
Les utilisateurs techniques rencontrent le plus souvent des problemes lorsqu'ils :
- empilent trop de logique dans un seul template
- traitent un fragment repete comme du markup copie au lieu d'une Variable
- utilisent des conditions pour compenser un modele de champs flou
- construisent une archive dynamique dans un Component alors qu'il faudrait une List
- oublient que la lisibilite fait partie de la qualite d'un template
Principes de conception
- garder les templates lisibles
- garder la logique metier peu profonde
- preferer une modelisation d'objet solide a des astuces de template
- utiliser des Variables pour les fragments repetes au lieu de copier le markup
- utiliser des Lists lorsque le probleme est la selection dynamique de contenu, pas seulement l'affichage
Raccourci de decision
Utilisez Facet lorsque la question ressemble a :
- "comment ce champ doit-il etre rendu ?"
- "cette section ne doit-elle s'afficher que si des donnees existent ?"
- "comment boucler sur ces elements ?"
- "comment reutiliser ce petit fragment ?"
Ne vous arretez pas a Facet lorsque la vraie question est plutot :
- "faut-il ici un Component ou une Variable ?"
- "ce contenu devrait-il etre une List ?"
- "cela appartient-il au Layout ou a la Page ?"