テンプレートエンジン
templatesモジュールは、設定済みのセットからJetテンプレートをレンダリングします。テンプレートでは継承とインクルードを使用できます。このページは独立したレンダリング例を示すAPIリファレンスであり、単体で完結するテンプレートのデプロイ手順ではありません。レジストリIDとテンプレートソースは事前に設定し、実行エントリでtemplatesを有効にして、要求するセットに対するtemplate.get権限を付与する必要があります。
テンプレートセットの設定については、テンプレートエンジンを参照してください。
ロード
local templates = require("templates")
templates.get
レジストリIDを指定してテンプレートセットを取得します。
local set, err = templates.get("app.views:emails")
if err then
return nil, err
end
-- Use the set...
return set:release()
| パラメータ | 型 | 説明 |
|---|---|---|
id |
string | テンプレートセットのレジストリID |
戻り値: Set, error
set:render
データを使用して名前でテンプレートをレンダリングします:
local set, get_err = templates.get("app.views:emails")
if get_err then
return nil, get_err
end
local html, err = set:render("welcome", {
user = {name = "Alice", email = "alice@example.com"},
activation_url = "https://example.invalid/activate"
})
set:release()
if err then
return nil, err
end
return html
呼び出し側は、取得した各セットをrelease()するまで所有します。最後のレンダリング後に、エラーを確認した経路も含めて解放してください。複数回解放しても安全です。レンダリングによって、アプリケーションから渡した値があらゆる出力コンテキストで安全になるわけではありません。シークレットや一度限りのURLをログに残さず、レンダリング結果の利用先に応じて必要なエスケープまたはサニタイズを適用してください。
| パラメータ | 型 | 説明 |
|---|---|---|
name |
string | セット内のテンプレート名 |
data |
table | テンプレートに渡す変数(オプション) |
戻り値: string, error
セットメソッドの概要
セットハンドルは次のメソッドを提供します。
| メソッド | 戻り値 | 説明 |
|---|---|---|
render(name, data?) |
string, error |
データでテンプレートをレンダリング |
release() |
boolean |
セットをプールに返却 |
Jet構文リファレンス
Jetは式と制御構造に{{ }}を使用し、コメントには{* *}を使用します。
変数
{{ user.name }}
{{ user.email }}
{{ items[0].price }}
条件分岐
{{ if order.shipped }}
<p>Shipped!</p>
{{ else if order.processing }}
<p>Processing...</p>
{{ else }}
<p>Received.</p>
{{ end }}
ループ
{{ range items }}
<li>{{ .name }} - ${{ .price }}</li>
{{ end }}
{{ range i, item := items }}
<p>{{ i }}. {{ item.name }}</p>
{{ end }}
継承
{* Parent: layout.jet *}
<html>
<head><title>{{ yield title() }}</title></head>
<body>{{ yield body() }}</body>
</html>
{* Child: page.jet *}
{{ extends "layout" }}
{{ block title() }}My Page{{ end }}
{{ block body() }}<p>Content</p>{{ end }}
インクルード
{{ include "partials/header" }}
<main>Content</main>
{{ include "partials/footer" }}
エラー
| 条件 | 種別 | 再試行可能 |
|---|---|---|
| 空のID | errors.INVALID |
いいえ |
| 空のテンプレート名 | errors.INVALID |
いいえ |
| 権限拒否 | errors.PERMISSION_DENIED |
いいえ |
| テンプレートセットが存在しない、利用できない、またはリソース種別が正しくない | errors.INTERNAL |
いいえ |
| テンプレートが見つからない | errors.NOT_FOUND |
いいえ |
| レンダリングエラー | errors.INTERNAL |
いいえ |
| 解放済みセットでレンダリングを実行 | errors.INTERNAL |
いいえ |
エラーの扱いについては、エラー処理を参照してください。