템플릿 엔진

templates 모듈은 구성된 set의 Jet template을 render합니다. template은 inheritance와 include를 사용할 수 있습니다. 이 페이지는 독립된 template deployment가 아니라 isolated rendering example을 포함한 API reference입니다. registry ID와 template source가 이미 구성되어 있어야 하며 executable entry는 templates를 enable하고 요청한 set에 대한 template.get permission을 가져야 합니다.

template set configuration은 템플릿 엔진을 참조하십시오.

로딩

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

caller는 획득한 모든 set을 release()할 때까지 소유합니다. checked error path를 포함해 마지막 render 후 release하십시오. 반복 release는 안전합니다. rendering은 application이 제공한 value를 모든 output context에서 안전하게 만들지 않습니다. secret과 one-time URL을 log에 남기지 말고 rendered string을 사용하는 위치에 필요한 escaping 또는 sanitization을 적용하십시오.

파라미터 타입 설명
name string 세트 내의 템플릿 이름
data table 템플릿에 전달할 변수 (선택적)

반환: string, error

Set 메서드 요약

메서드 반환 설명
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 아니오
template set missing, unavailable 또는 resource type 불일치 errors.INTERNAL 아니오
템플릿을 찾을 수 없음 errors.NOT_FOUND 아니오
렌더링 에러 errors.INTERNAL 아니오
release된 set에서 render 시도 errors.INTERNAL 아니오

에러 처리에서 error 사용법을 확인하십시오.