지난번에 간단히 handlebar 라이브러리 사용법을 정리했었다.
▷ 자바스크립트 템플릿 라이브러리 - handlebars
이전 글에 이어 쓰기엔 너무 길어질 거 같아서 더 공부하게 된 것들(사용해본 것들)은 여기에 새로 정리하려고 한다.
1. 중첩된 데이터 가져오기
1) each 헬퍼 밖의 데이터
만약 템플릿에 바인딩할 데이터가
var data = {
students: [
{
name: "enai",
age: "10"
},
{
name: "tistory",
age: "20"
}
],
title: "Hello"
}
이렇고,
Hello enai(10)
Hello tistory(20)
이런 결과를 나타내고 싶다. students가 배열이므로 each 헬퍼를 사용하여 템플릿을 다음과 같이 만든다.
{{#each students}}
{{../title}} {{name}}({{age}})
{{/each}}
{{#each}} {{/each}} 안의 데이터는 {{ }} 속의 데이터를 each 헬퍼 옆에 적힌 데이터 안에서 찾는다.
title의 경우엔 students 안에 없기 때문에 {{title}}이라고 하면 원하는 값을 찾지 못한다.
../ 는 헬퍼가 호출한 데이터의 상위 데이터를 말한다. (상대 경로, 헬퍼 블록에 따라 ../ 가 가리키는 값이 달라질 수 있다.)
예시 데이터에선 students의 상위 데이터는 data이다. 그래서 {{../title}}은 data.title을 가져올 수 있다.
※참고: 모든 헬퍼에 ../ 가 필요한 건 아니다. #if 헬퍼에선 ../ 없이 데이터를 가져온다.
2) 중첩된 JSON 데이터 가져오기
{
board:{
title: "handlebar",
contents: "guide"
}
아래는 위 예제 데이터의 title과 contents를 보여주는 템플릿이다.
{{board.title}} {{board.contents}}
이처럼 템플릿에서 JSON 데이터 안의 JSON 데이터는 . 으로 호출한다.
/ 를 사용할 수도 있다.
{{board/title}} {{board/contents}}
3) 헬퍼와 이름이 겹치는 데이터 가져오기
만약 커스텀 헬퍼로 name을 등록했는데, 가져올 데이터의 키 값도 name인 경우,
키 값이 name인 데이터는 다음과 같이 템플릿을 만들어 가져온다.
{{./name}}
{{this/name}}
{{this.name}}
2. @데이터 변수
@데이터 변수란 앞에 @가 붙은 데이터 변수를 말한다. handlebars의 내장 헬퍼에 의해 구현된다.
1) @first
{{#each array}}
{{#if @first}}
First
{{/if}}
{{/each}}
each 헬퍼(반복문) 데이터의 첫번째 데이터만 true로 가져온다.
여러 데이터 중 첫번째 데이터만 바인딩할 때 쓰면 되겠다.
2) @last
{{#each array}}
{{#if @last}}
Last
{{/if}}
{{/each}}
@first와 반대로 each 헬퍼 데이터의 마지막 데이터만 true 반환.
마지막 데이터만 바인딩해야할 때 쓰면 되겠다.
3) @index
@index도 each헬퍼에서 쓰인다.
{{#each array}}
{{@index}}
{{/each}}
each 헬퍼의 index 값을 가져온다. 0부터 시작한다.
for문의 index 값처럼 생각하면 되겠다.
4) @key
{{#each array}}
{{@key}}
{{/each}}
each 헬퍼로 읽히는 현재 데이터의 키 값을 가져온다.
5) @root
템플릿이 실행된 초기 컨텍스트를 가리킨다.
{{#each array}}
{{@root.foo}}
{{/each}}
출처)
'JavaScript' 카테고리의 다른 글
생성자 패턴 (new 키워드와 prototype 객체) (0) | 2019.08.21 |
---|---|
jQuery 사용하지 않고 프로그래밍하기 (ft.Vanilla JS) (0) | 2019.08.19 |
Visual Studio Code로 HTML, JavaScript 사용하기 (5) | 2019.08.18 |
컴퓨터뿐만 아니라 사람도 이해할 수 있는 클린 코드 (0) | 2019.08.09 |
자바스크립트 템플릿 라이브러리 - handlebars (0) | 2019.08.09 |
댓글