Facet Template Engine — Developer Guide
Facet is the core rendering engine of FaceFlow.
Documentação do Desenvolvedor Facet
Facet é a camada de template usada pelo FaceFlow para renderização dinâmica.
Oferece aos usuários técnicos uma forma controlada de emitir valores, compor fragmentos de template reutilizáveis, trabalhar com loops e condicionais, e construir lógica de exibição dinâmica dentro do PageFace.
Para que o Facet é usado
- templates de componente
- templates de variável
- saída de listas dinâmicas
- renderização de conteúdo compartilhado
- saída de página contextual
Facet não é todo o sistema FaceFlow. É a linguagem de renderização dentro dele. FaceFlow define os objetos e contratos. Facet define como esses objetos renderizam saída dinâmica de forma segura.
Capacidades principais
Usuários técnicos normalmente utilizam o Facet para:
- saída escapada e bruta
- condicionais e blocos de loop
- renderização dependente da página e da consulta
- cadeias de filtros e formatação
- incorporação de variáveis
- composição segura de templates dentro de objetos reutilizáveis
Facet vs FaceFlow
Mantenha essa separação clara:
- FaceFlow define objetos como Páginas, Componentes, Variáveis, Listas, Formulários e Avaliações
- Facet define como esses objetos renderizam saída dinâmica
Se um usuário técnico está decidindo qual objeto criar, ele está no território de design do FaceFlow.
Se estiver decidindo como um objeto existente deve renderizar campos, condições e loops, está no território do Facet.
Onde o Facet aparece
Facet aparece comumente em:
- templates HTML de Componentes
- templates de Variáveis
- templates de itens de Lista
- fragmentos dinâmicos menores que precisam de contexto em tempo de execução
Um exemplo simples:
<section class="hero">
<h1>{{ title }}</h1>
{{#if summary}}
<p>{{ summary }}</p>
{{/if}}
[[sales-contact-badge]]
</section>Este exemplo mostra o modelo mental mais comum:
- o objeto FaceFlow fornece o contrato
- o Facet fornece a lógica de renderização
O que o Facet não deve fazer
O Facet é poderoso, mas não deve se tornar um substituto para um bom modelamento de objetos.
Não use o Facet para:
- ocultar uma estrutura de conteúdo fraca por trás de truques de template
- transformar um template em um motor de fluxo de trabalho de negócios
- substituir Listas por lógica de arquivo escrita manualmente quando o problema é realmente conteúdo baseado em consultas
- simular um grande esquema editável que deveria ser um Componente
Como Aprender o Facet
Use este caminho de leitura:
- comece com Sintaxe de Template
- continue para Referência
- depois retorne ao objeto FaceFlow que possui o template que você está editando
Essa ordem funciona porque a sintaxe vem primeiro, padrões mais profundos em segundo, e a aplicação específica do objeto por último.
Casos de Uso Comuns
Usuários técnicos geralmente recorrem ao Facet quando precisam:
- exibir campos opcionais de forma limpa
- iterar por conteúdo repetido
- formatar valores dependentes da página
- incorporar Variáveis reutilizáveis
- construir templates de arquivo e de lista sem código cru da plataforma
Erros Comuns
Usuários técnicos mais frequentemente encontram problemas quando:
- colocam lógica demais em um único template
- tratam um fragmento repetido como marcação copiada em vez de como uma Variável
- usam condicionais para compensar um modelo de campo pouco claro
- constroem um arquivo dinâmico em um Componente quando deveria ser uma Lista
- esquecem que legibilidade faz parte da qualidade do template
Orientações de Design
- mantenha os templates legíveis
- mantenha a lógica de negócio superficial
- prefira um forte modelamento de objetos em vez de truques inteligentes de template
- use Variáveis para fragmentos repetidos em vez de copiar marcação
- use Listas quando o problema é seleção dinâmica de conteúdo, não apenas exibição
Atalho de Decisão
Use o Facet quando a pergunta soar como:
- "como este campo deve ser renderizado?"
- "esta seção deve aparecer apenas quando houver dados?"
- "como faço para iterar por esses itens?"
- "como reutilizo este pequeno fragmento?"
Não pare no Facet quando a pergunta for realmente:
- "isto deve ser um Componente ou uma Variável?"
- "este conteúdo deve ser uma Lista?"
- "isto pertence no Layout ou na Página?"