sqzass.git

sqzass

~ A static site generator written in Rust
git clone https://github.com/debuman/sqzass.git

docs/content/templates/_index.ko.md (1661B)

      1 +++
      2 title = "템플릿"
      3 description = "Jinja2 호환 템플릿, 엄격한 데이터 모델, 명시적인 선택 규칙"
      4 weight = 30
      5 sort_by = "weight"
      6 +++
      7 
      8 템플릿은 `templates/`에 두며 [minijinja]입니다. Jinja2 문법이라 `{% extends %}`,
      9 `{% block %}`, `{% include %}`, `{% macro %}`와 필터가 아는 그대로 동작합니다.
     10 
     11 ```
     12 templates/
     13 ├── base.html
     14 ├── page.html
     15 ├── section.html
     16 └── partials/
     17     ├── sidebar.html
     18     └── toc.html
     19 ```
     20 
     21 ## 익숙한 것보다 엄격한 지점이 둘 있습니다
     22 
     23 **정의되지 않은 값을 읽으면 에러입니다.** front matter 키 이름을 바꾸면, 구멍이
     24 뚫린 페이지를 렌더하는 대신 템플릿 이름과 키 이름을 들고 빌드가 멈춥니다. 가장
     25 엄격한 설정은 아닙니다. 정의된 적 없는 값에 대한 `{% if optional %}`은 그대로
     26 동작하는데, "이게 있나?"를 물을 수 없는 템플릿으로는 페이지마다 생김새가 다른
     27 사이트를 만들 수 없기 때문입니다.
     28 
     29 **모든 값이 기본적으로 이스케이프됩니다.** `page.content`는 이미 HTML이므로
     30 `| safe`가 필요합니다. `| safe`를 의도적으로 한 번 쓰는 대신, 나머지 모든 값이
     31 아무 생각 없이도 안전해집니다.
     32 
     33 ## 빌드마다 스냅샷
     34 
     35 `templates/`는 빌드 시작 때 한 번 읽고, `include`/`extends`는 그 스냅샷에서
     36 해석됩니다. 개발 서버가 지켜보는 중에 파셜을 저장해도, 그때 일어난 리빌드는 일관된
     37 한 벌의 파일만 봅니다. 반쯤 쓰인 파일을 보는 일이 없습니다.
     38 
     39 [minijinja]: https://github.com/mitsuhiko/minijinja