HTML templating 실습
2020-06-26
해당 Post는 HTML templating에 대해서 정리한 파일입니다.
HTML Templating작업을 하기 위해서는 Ajax로 데이터를 가져오는 방법도 필요하고, 또 한 가지 template을 어딘가 보관해야 할 겁니다.
몇 가지 방법이 있겠지만, 간단한 방법을 알아볼 예정입니다.
HTML Template의 보관
HTML Template 보관이라는 게 있습니다.
우리가 템플릿 코드를 어떻게 보관할 것이냐.
어떤 코드가 이제 템플릿이라고 치면
이거 자바스크립트 코드 안에서 보관하는 건?
굉장히 안 좋습니다.
자바스크립트 함수라는 건 뭔가요.
어떤 데이터, 로직을 처리하는 것인데 이렇게 많은 부분을 굉장히 긴 템플릿이다 그러면 자바스크립트 코드를 해석하는 게
굉장히 어려울 것 입니다. 가독성이 떨어지는 코드가 될 것이고.
var html = "<li><h4>{title}</h4><p>{content}</p><div>{price}</div></li>";
- 서버에서 file로 보관하고 Ajax로 요청해서 받아옵니다.
- HTML코드 안에 숨겨둔다(?) 간단한 것이라면 HTML 안에 숨겨둘 수가 있습니다.
숨겨야 할 데이터가 많다면 별도 파일로 분리해서 Ajax로 가져오는 방법도 좋습니다.
하지만 많지 않은 데이터이므로 우리는 HTML 안에 잘 보관해두겠습니다.
Templating
HTML 중 script 태그는 type이 javascript가 아니라면 렌더링하지 않고 무시합니다.
바로 이걸 이용하는 겁니다.
<script id="template-list-item" type="text/template">
<li>
<h4>{title}</h4><p>{content}</p><div>{price}</div>
</li>
</script>
이렇게 간단히 javascript에서 가져올 수가 있을 겁니다.
var html = document.querySelector("#template-list-item");
이후 작업은 replace로 하면 끝나죠.
var data = [
{title : "hello",content : "lorem dkfief",price : 2000},
{title : "hello",content : "lorem dkfief",price : 2000}
];
//html 에 script에서 가져온 html template.
var html = document.querySelector("#template-list-item").innerHTML;
var resultHTML = "";
for(var i=0; i<data.length; i++) {
resultHTML += html.replace("{title}", data[i].title)
.replace("{content}", data[i].content)
.replace("{price}", data[i].price);
}
document.querySelector(".content").innerHTML = resultHTML;