Motor de Templates
As entradas de template configuram conjuntos e fontes de templates do CloudyKit Jet.
Esta página é uma referência de configuração. Os blocos YAML são fragmentos para uma lista de entradas existente; combine cada template com o template.set referenciado no mesmo projeto ou grafo de módulos instalados.
Tipos de Entradas
| Tipo | Descrição |
|---|---|
template.set |
Conjunto de templates com configuração compartilhada |
template.jet |
Template individual |
Conjuntos de Templates
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 a configuração de um conjunto de templates é opcional:
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
engine.development_mode |
bool | false | Desabilita cache de templates |
engine.delimiters.left |
string | {{ |
Delimitador de abertura de variável |
engine.delimiters.right |
string | }} |
Delimitador de fechamento de variável |
engine.delimiters.comment_left |
string | {* |
Apenas validado; comentários sempre usam o {* do Jet |
engine.delimiters.comment_right |
string | *} |
Apenas validado; comentários sempre usam o *} do Jet |
engine.extensions |
string[] | [.jet, .html.jet, .jet.html] |
Apenas validado; a busca por nome sempre tenta os .jet, .html.jet, .jet.html embutidos do Jet |
engine.globals |
map | - | Variáveis disponíveis para todos os templates |
Em runtime, development_mode, os delimitadores esquerdo e direito de expressões e globals configuram o conjunto Jet. Os campos de delimitadores de comentários e extensões são aceitos e validados nesta versão, mas não são aplicados pelo loader Jet em memória. Alterá-los não muda o parsing nem faz o loader descobrir templates.
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>Welcome, {{ name }}</h1>
{{ end }}
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
set |
referência | Sim | Conjunto de templates pai |
source |
string | Sim | Conteúdo inline do template ou uma referência file:// relativa ao manifest |
Uma referência file:// relativa é carregada a partir do manifest que contém a entrada e não pode escapar do sistema de arquivos desse manifest. Placeholders de ambiente dentro da fonte resultante são preservados como texto do template, em vez de serem resolvidos pelo sistema de ambiente.
Resolução de Templates
Templates referenciam uns aos outros pelo nome, e não pelo ID do registro. Os nomes são resolvidos dentro do conjunto:
- Por padrão, o nome da entrada do registro (
entry.ID.Name) se torna o nome do template - Sobrescreva com
meta.namepara nomenclatura personalizada:
- name: email-welcome-v2
kind: template.jet
set: app.emails:templates
meta:
name: welcome
source: |
{{ include "header" }}
Hello {{ user }}!
Este template é registrado como welcome no conjunto, então outros templates usam {{ include "welcome" }} ou {{ extends "welcome" }}.
Herança
Templates podem estender templates pai e sobrescrever blocos:
# Parent defines yield points
- name: base
kind: template.jet
set: app.views:views
source: |
<html>
<head><title>{{ yield title() }}</title></head>
<body>{{ yield body() }}</body>
</html>
# Child extends and fills blocks
- name: page
kind: template.jet
set: app.views:views
source: |
{{ extends "base" }}
{{ block title() }}My Page{{ end }}
{{ block body() }}<p>Content here</p>{{ end }}
API Lua
Consulte o módulo Template para as operações de renderização.
Consulte também
- Módulo Template — Referência da API Lua
- Filesystem — Carregamento de templates do disco
- Endpoint HTTP — Renderização de templates a partir de handlers de requisição