Pular para o conteúdo

Motor de Templates

Renderização de templates usando CloudyKit Jet.

TipoDescrição
template.setConjunto de templates com configuração compartilhada
template.jetTemplate individual

Um conjunto é um namespace contendo templates relacionados. Templates dentro de um conjunto compartilham configuração e podem referenciar uns aos outros pelo nome.

- name: views
kind: template.set

Toda configuração é opcional com padrões sensíveis:

CampoTipoPadrãoDescrição
engine.development_modeboolfalseDesabilita cache de templates
engine.delimiters.leftstring{{Delimitador de abertura de variável
engine.delimiters.rightstring}}Delimitador de fechamento de variável
engine.globalsmap-Variáveis disponíveis para todos os templates

Templates pertencem a um conjunto e são identificados pelo nome para resolução interna.

- name: layout
kind: template.jet
set: app.views:views
source: |
<html>
<body>{{ yield content() }}</body>
</html>
- name: home
kind: template.jet
set: app.views:views
source: |
{{ extends "layout" }}
{{ block content() }}
<h1>Bem-vindo, {{ name }}</h1>
{{ end }}
CampoTipoObrigatórioDescrição
setreferênciaSimConjunto de templates pai
sourcestringSimConteúdo do template

Templates referenciam uns aos outros usando nomes, não IDs de registro. A resolução funciona como um sistema de arquivos virtual dentro do conjunto:

  1. Por padrão, o nome da entrada do registro (entry.ID.Name) se torna o nome do template
  2. Sobrescreva com meta.name para nomenclatura personalizada:
- name: email-welcome-v2
kind: template.jet
set: app.emails:templates
meta:
name: welcome
source: |
{{ include "header" }}
Olá {{ user }}!

Este template é registrado como welcome no conjunto, então outros templates usam {{ include "welcome" }} ou {{ extends "welcome" }}.

Templates podem estender templates pai e sobrescrever blocos:

# Pai define pontos de yield
- name: base
kind: template.jet
set: app.views:views
source: |
<html>
<head><title>{{ yield title() }}</title></head>
<body>{{ yield body() }}</body>
</html>
# Filho estende e preenche blocos
- name: page
kind: template.jet
set: app.views:views
source: |
{{ extends "base" }}
{{ block title() }}Minha Página{{ end }}
{{ block body() }}<p>Conteúdo aqui</p>{{ end }}

Veja Módulo Template para operações de renderização.