テンプレートエンジン
テンプレートエンジン
Section titled “テンプレートエンジン”CloudyKit Jetを使用したテンプレートレンダリング。
エントリ種別
Section titled “エントリ種別”| 種別 | 説明 |
|---|---|
template.set | 共有設定を持つテンプレートセット |
template.jet | 個別テンプレート |
テンプレートセット
Section titled “テンプレートセット”セットは関連するテンプレートを含む名前空間です。セット内のテンプレートは設定を共有し、名前で相互参照できます。
- name: views kind: template.setすべての設定は妥当なデフォルト値を持つオプションです:
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
engine.development_mode | bool | false | テンプレートキャッシュを無効化 |
engine.delimiters.left | string | {{ | 変数開始デリミタ |
engine.delimiters.right | string | }} | 変数終了デリミタ |
engine.globals | map | - | すべてのテンプレートで利用可能な変数 |
テンプレート
Section titled “テンプレート”テンプレートはセットに属し、内部解決用に名前で識別されます。
- 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 }}| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
set | reference | はい | 親テンプレートセット |
source | string | はい | テンプレートコンテンツ |
テンプレート解決
Section titled “テンプレート解決”テンプレートはレジストリIDではなく名前で相互参照します。解決はセット内の仮想ファイルシステムのように機能します:
- デフォルトでは、レジストリエントリ名(
entry.ID.Name)がテンプレート名になります - カスタム命名には
meta.nameでオーバーライド:
- name: email-welcome-v2 kind: template.jet set: app.emails:templates meta: name: welcome source: | {{ include "header" }} Hello {{ user }}!このテンプレートはセット内でwelcomeとして登録されるため、他のテンプレートは{{ include "welcome" }}または{{ extends "welcome" }}を使用します。
テンプレートは親テンプレートを拡張し、ブロックをオーバーライドできます:
# 親はyieldポイントを定義- name: base kind: template.jet set: app.views:views source: | <html> <head><title>{{ yield title() }}</title></head> <body>{{ yield body() }}</body> </html>
# 子は拡張してブロックを埋める- name: page kind: template.jet set: app.views:views source: | {{ extends "base" }} {{ block title() }}My Page{{ end }} {{ block body() }}<p>Content here</p>{{ end }}Lua API
Section titled “Lua API”レンダリング操作についてはテンプレートモジュールを参照してください。
- テンプレートモジュール - Lua APIリファレンス
- ファイルシステム - ディスクからのテンプレート読み込み
- HTTPエンドポイント - リクエストハンドラからのテンプレートレンダリング