hTemplate – 1.3.페이지 작성 과정

템플릿을 이용하여 웹페이지를 작성하는 과정을 살펴보겠습니다.

수행 동작 3단계

하나의 템플릿을 가지고 HTML로 변화시키는 과정은 보통 3단계를 거치게 됩니다. 이러한 과정을 모든 템플릿에 대하여 순차적으로 또는 병행하여 수행하므로써 하나의 완성된 페이지가 작성되는 것입니다.

  1. 템플릿 문서 등록하기 : define()
  2. 템플릿 변수 할당하기 : assign()
  3. 템플릿 변수 출력하기 : output()

FastTemplate에서는 assign 단계가 assign과 parse로 나누어 설명됩니다. 그러나 후키템플릿에서는 parse 단계에 있던 대부분의 기능이 define 단계에 흡수되었으며 나머지 부분 즉 템플릿 내에 있는 변수에 값을 할당하는 것은 assign 개념과 같은 개념으로 보기 때문에 이 기능 또한 assign 단계에 흡수되었습니다.

output() 함수는 1.2.0 버전부터 지원되는 함수로 이전 버전의 FastPrint() 함수의 모든 기능을 포함하고 있습니다.

< 수행 동작 3단계 >

템플릿 문서 등록하기

  • define(템플릿명, 템플릿파일명)

이 부분은 함수 내부 동작에 있어서 FastTemplate와 후키템플릿 사이에 가장 큰 차이를 보이는 부분입니다. FastTemplate에서는 단지 템플릿명을 파일명으로 맵핑하는 것으로 define() 함수의 동작이 종료됩니다. 그러나 후키템플릿에서는 맵핑뿐만 아니라 파일로부터 템플릿 정보를 읽어들인 후 템플릿 구조 분석 및 템플릿 변수 분리 작업을 모두 수행하게 됩니다.

예를 들어 템플릿 정보가 저장된 파일이 “calendar.htm”이고 이를 메모리상에 올렸을 때의 템플릿을 “cal”이라는 이름으로 읽어들이고자 한다면 아래와 같이 코딩합니다.

버전 1.0.0부터 제안된 no-file용법을 이용하면 템플릿 파일 대신에 템플릿 변수가 포함된 HTML 소스가 저장된 문자열을 직접 지정할 수 있습니다.

템플릿 변수 할당하기

  • assign(템플릿변수명, 템플릿명)
  • assign(템플릿변수명, 블록명)
  • assign(템플릿변수명, 문자열)

템플릿 변수에 그 값을 할당하는 단계로서, 두 번째 인수로 지정되는 것이 무엇이냐에 따라 변수값 처리방법이 달라지게 됩니다.

변수값으로 지정될 수 있는 것은 3가지로 문자열, 템플릿명, 블록명이 올 수 있습니다.

문자열을 할당할 때

문자열을 지정할 때는 그 문자열 값이 그대로 변수값으로 할당됩니다. 이 문자열은 템플릿 변수가 포함되지 않은 HTML스크립트를 포함한 일반 문자열이어야 합니다.

  • assign(템플릿변수명, 문자열)

만약 템플릿 변수가 포함된 문자열을 처리해야 한다면, assign()이 아니라 define() 메소드를 이용하여 해당 문자열을 먼저 템플릿으로 등록하여야 합니다. 이 용법에 대하여는 “define()” 메뉴의 “no-file 용법” 항목을 참조 바랍니다.

템플릿명을 지정할 때

템플릿명을 지정하게 되면 해당 템플릿을 가져와서 그 내부에 포함되어 있는 변수를 모두 처리한 후 그 결과값을 첫 번째 인수로 지정된 템플릿 변수명에 할당합니다.

  • assign(템플릿변수명, 템플릿명)

블록명을 지정할 때

블록명을 지정하게 되면 해당 블록 내용을 가져와서 그 내부에 포함되어 있는 변수를 모두 처리한 후 그 결과값을 지정된 블록명에 해당하는 변수에 할당합니다.

각 블록에는 지정된 템플릿 변수가 미리 정의되어 있으며 이 변수명은 블록명과 동일합니다. 버전 0.0.1에서는 블록명을 지정할 때는 assign() 함수에 지정된 첫 번째 인수 템플릿 변수명은 사용되지 않는 무의미한 인수로 어떤 변수명을 지정하더라도 상관없으며 그냥 무시해버립니다.

  • assign(템플릿변수명, 블록명)

버전 0.0.2부터는 아래와 같이 템플릿 변수명을 반드시 블록명과 동일하게 지정하여야 에러메시지를 보지 않게 될 것입니다.

  • assign(블록명, 블록명)

버전 1.2.0부터는 템플릿 변수명을 블록명과 동일하게 지정하지 않아도 에러메시지를 발생시키지는 않습니다. 두번째 인자로 지정한 해당 블록의 처리 결과를 첫번째 인자로 지정한 변수에 저장합니다. 따라서 첫번째 인자와 두번째 인자로 지정된 이름이 다르게 되면 템플릿 문서 내의 해당 블록 위치에는 아무런 값도 나타나지 않을 것입니다.

앞장에서 살펴본 2001년 12월 달력을 예로 든다면 아래와 같이 템플릿 변수 “YEAR”과 “MONTH”에 해당값을 할당할 수 있을 것입니다.

템플릿 변수 출력하기

  • output(템플릿변수명)

assign() 함수를 통해 할당된 템플릿 변수값을 output() 함수를 통해 웹브라우저로 출력합니다. 1.2.0 이전 버전에서는 output() 함수 대신에 FastPrint() 함수를 이용하여야 합니다.

답글 남기기