Menu

DIET 템플릿 (DIET Templates)

DIET 템플릿 지원으로 인해 vibe.d 상에서 동작하는 웹 페이지를 작성하는 게 간단해집니다.

DIET는 Jade 를 기반으로 한 템플릿 언어로, HTML 페이지를 간단한 문법에 따라 생성할 수 있게 해줍니다.

    doctype html
    html(lang="en")
      head
        // D 코드로부터 pageTitle 값을 받습니다
        title #{pageTitle}
        // 태그의 속성은 이렇게 부여합니다
        script(type='text/javascript')
          if (foo) bar(1 + 5)
        // HTML 엘리먼트 ID는 body-id 로,
        // html 엘리먼트 클래스는 the-style 로 지정합니다
        body#body-id.the-style
          h1 DIET template

DIET 템플릿 코드는 파이썬(python) 언어처럼 들여쓰기가 중요합니다. 들여쓰기를 강제한 대신, 닫는 태그는 자동으로 처리됩니다.

DIET 템플릿은 최상의 성능을 위해 메모리에 올릴 수 있게 컴파일된 상태로 이용됩니다. 그리고 DIET 템플릿 내에서 D 언어 코드를 함께 사용할 수 있습니다. #{ 1 + 1 } 과 특별한 문법 내에 코드를 감싸서 한 줄짜리 함수 호출의 결과물이나 수식 결과물을 HTML 문서에 함께 출력할 수 있습니다. #{ } 를 사용하지 않는 경우, 모든 D 언어 코드는 DIET 내에서 - 로 시작되어야합니다.

    - foreach(title; titles)
      h1 #{title}

- 로 시작하는 줄은 D 언어 코드로 처리되며, 여러줄의 코드를 작성할 때 좋습니다. 심지어 이런 식으로 HTML 생성에 도움을 줄 D 언어 함수를 정의하는 것도 가능합니다.

DIET 템플릿 파일들은 컴파일 시점 반환값 예측(CTFE) 기법을 적용한 코드로 변환되며, 표준 vibe.d 폴더 구성을 기준으로 했을 때 views 폴더 내에 있어야합니다. 템플릿은 그 자체로는 HTML이 될 수 없지만, URL 핸들러 내에서 제공되는 render 함수를 사용해 최종적으로 보여질 HTML로 만들어집니다.

    void foo(HTTPServerResponse res) {
        string pageTitle = "Hello";
        int test = 10;
        res.render!("my-template.dt", pageTitle, test);
    }

모든 D 언어 값/변수는 render 에 사용될 파라미터로 쓰일 수 있습니다.

rdmd playground.d