티스토리 뷰

5) HTML templating 실습

HTML Template의 보관

  • 아래와 같은 html 문자열, template을 어딘가 보관해야 합니다. Javascript코드 안에서 이런 정적인 데이터를 보관하는 건 좋지 않기 때문입니다.

var html = "<li><h4>{title}</h4><p>{content}</p><div>{price}</div></li>";

 

  • Template 보관 방법
    • 서버에서 file로 보관하고 Ajax로 요청해서 받아옵니다.
    • HTML코드 안에 숨겨둔다(?)
  • 간단한 것이라면 HTML 안에 숨겨둘 수가 있습니다.
    숨겨야 할 데이터가 많다면 별도 파일(a.template, b.template)로 분리해서 Ajax로 가져오는 방법도 좋습니다.
    하지만 여기서는 많지 않은 데이터이므로 우리는 HTML 안에 잘 보관해두겠습니다.

Templating

  • HTML script 태그는 type javascript가 아니라면 렌더링하지 않고 무시합니다.
    바로 이걸 이용하는 겁니다. HTML템플릿을 숨길 수 있습니다.

<script id="template-list-item" type="text/template">

  <li>

      <h4>{title}</h4><p>{content}</p><div>{price}</div>

  </li>

</script>

 

  • 이렇게 간단히 javascript에서 가져올 수가 있을 겁니다.
    이후 작업은 replace를 호출하여 처리하면 됩니다.

var html = document.querySelector("template-list-item");

 

실습 코드

<html>

<head>

</head>

<body>

  <h2>template test example</h2>

  <ul class="content"></ul>

</body>

  <script id="template-list-item" type="text/template">

    <li>

        <h4>{title}</h4><p>{content}</p><div>{price}</div>

    </li>

</script>

<script>

//원래는 서버에서 가져와야 하는데 여기선 mock데이터라고 하는 가짜데이터를 사용.

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;

</script>

</html>

 

생각해보기

  • template 작업이 반복적이거나 어떤 조건에 따라서 일부 데이터는 보이지 말아야 하는 것은 어떻게 처리해야 할까요? 데이터 파싱작업이 꽤 번거로울 겁니다. template를 돕는 라이브러리들이 있습니다. 이를 찾아보고 그 사용법을 알아보세요.
  • ES6에서는 template literal이라는 것이 나왔습니다. 더는 replace 메서드를 사용하지 않고도 아주 쉽게 해결할 수가 있습니다. 이것도 어떻게 사용하는지 알아보면 좋습니다.

 

'부스트코스 웹 프로그래밍 > 3. 웹 앱 개발: 예약서비스 1' 카테고리의 다른 글

6. Tab UI 실습 - FE (2)  (0) 2019.08.03
6. Tab UI 실습 - FE (1)  (0) 2019.08.03
5. WEB UI - FE (4)  (0) 2019.08.03
5. WEB UI - FE (3)  (0) 2019.08.03
5. WEB UI - FE (2)  (0) 2019.08.03
Comments