기타
handlebars 라이브러리
sinabeuro
2021. 8. 14. 22:56
728x90
자바스크립트에서 html 태그를 만들어 dom에 append를 쉽게 할 수 있는 라이브러리를 소개합니다.
handlebars는 자바스크립트의 데이터를 레터럴 형식으로 dom을 만드는 라이브러리입니다.
기본문법은 더블브레스{{ }}를 사용하며, 태그의 속성명이 더블 브래이스 안에 있는 속성명으로 대체됩니다.
handlebars에서 지원하는 간단한 함수를 사용할 수 있습니다.
handlebars안에 있는 함수는 헬퍼라고 부르며, '#함수명' 형식으로 사용합니다.
예를 들어
조건문은
{{#if}}
{{else}}
{{/if}}
반복문은
{{#each}}
{{/each}}
더 다양한 표현을 위해서 정의 함수(헬퍼)를 등록해서 사용할 수 있습니다.
헬퍼와 관련해서 자세한 내용은 공식 홈페이지를 참조하시길 바랍니다.
Handlebars
handlebarsjs.com
마지막으로 handlebars 예제를 보겠습니다.
<!-- html -->
<script src="https://cdn.jsdelivr.net/npm/handlebars@latest/dist/handlebars.js"></script>
<div id="app">
</div>
// js
const source = `
<div class="entry">
<h1>{{title}}</h1>
{{#if hasList}}
<ul>
{{#each list}}
<li>{{title}} - {{director}}</li>
{{/each}}
</ul>
{{else}}
<div class="jumbotron">
등록된 영화 목록이 없습니다.
</div>
{{/if}}
</div>
`;
let template = Handlebars.compile(source);
let data = {
title: '영화',
list: [
{ title: '너의 이름은', director: '신카이 마코토', actors: ['카미키 류노스케','카미시라이시 모네','나리타 료','유우키 아오이'] },
{ title: ' 패신저스', director: '모튼 틸덤', actors: ['제니퍼 로렌스', '크리스 프랫', '마이클 쉰', '로렌스 피시번'] },
{ title: '사랑하기 때문에', director: '주지홍', actors: ['차태현', '김유정', '서현진', '박근형'] },
{ title: '내 어깨 위 고양이, 밥', director: '로저 스포티스우드', actors: ['김하늘', '유인영', '이원근'] },
]
};
data.hasList = data.list.length > 0;
document.querySelector('#app').innerHTML = template(data);
728x90