템플릿 엔진
템플릿 엔진
섹션 제목: “템플릿 엔진”Jet 템플릿 엔진을 사용하여 동적 콘텐츠를 렌더링합니다. 템플릿 상속과 포함을 사용하여 HTML 페이지, 이메일, 문서를 빌드합니다.
템플릿 세트 설정은 템플릿 엔진을 참조하세요.
local templates = require("templates")템플릿 세트 획득
섹션 제목: “템플릿 세트 획득”레지스트리 ID로 템플릿 세트를 가져와 렌더링을 시작합니다:
local set, err = templates.get("app.views:emails")if err then return nil, errend
-- 세트 사용...
set:release()| 파라미터 | 타입 | 설명 |
|---|---|---|
id | string | 템플릿 세트 레지스트리 ID |
반환: Set, error
템플릿 렌더링
섹션 제목: “템플릿 렌더링”데이터와 함께 이름으로 템플릿을 렌더링합니다:
local set = templates.get("app.views:emails")
local html, err = set:render("welcome", { user = {name = "Alice", email = "alice@example.com"}, activation_url = "https://example.com/activate?token=abc"})
if err then set:release() return nil, errend
set:release()return html| 파라미터 | 타입 | 설명 |
|---|---|---|
name | string | 세트 내의 템플릿 이름 |
data | table | 템플릿에 전달할 변수 (선택적) |
반환: string, error
세트 메서드
섹션 제목: “세트 메서드”| 메서드 | 반환 | 설명 |
|---|---|---|
render(name, data?) | string, error | 데이터와 함께 템플릿 렌더링 |
release() | boolean | 세트를 풀로 반환 |
Jet 구문 참조
섹션 제목: “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 }}{* 부모: layout.jet *}<html><head><title>{{ yield title() }}</title></head><body>{{ yield body() }}</body></html>
{* 자식: 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.NOT_FOUND | 아니오 |
| 렌더링 에러 | errors.INTERNAL | 아니오 |
| 세트가 이미 해제됨 | errors.INTERNAL | 아니오 |
에러 처리는 에러 처리를 참조하세요.