머스테치

  • 머스테치는 템플릿 엔진 (http://mustache.github.io/)

  • 자바, 루비, 자바스크립트, 파이썬, PHP, 펄, GO, ASP등 현존하는 대부분 언어를 지원


<템플린 엔진의 종류와 단점>

  • jsp, velocity : 스프링부트에서 권장하지 않음

  • Freemarker : 너무 과하게 많은 기능, 숙련도가 낮아 Freemarker안에 비지니스 로직이 추가 될 확률이 높음

  • Thymeleaf

    • 스프링에서 적극적으로 밀고 있지만 문법이 어려움

    • HTML 태그에 속성으로 템플릿 기능을 사용하는 방식으로 배우기 어려움


<머스테치의 장점>

  • 문법이 다른 템플릿 엔진보다 심플

  • 로직 코드를 사용할 수 없어서 View의 역할과 서버의 역할을 명확하게 분리

  • Mustache.js와 Mustache.java 2가지가 다 있어서, 하나의 문법으로 클라이언트/서버 템플릿 모두 사용 가능

  • 인텔리제이 커뮤니티버전에서도 플러그인을 사용할 수 있음(jsp, Thymeleaf는 얼티메이트버전에서만 공식지원)



<머스테치 세팅>

  1. Marketplace에서 mustache 검색 후 Install

  2. build.gradle에 의존성 등록 (dependencies {} 안에)


    compile('org.springframework.boot:spring-boot-starter-mustache')



<머스테치 사용>

  • 기본적인 파일 위치는 src/main/resources/templates

  • 확장자는 .mustache



<머스테치 문법>

{{>layout/header}}
   <h1>spring Boot WebServcie ver.2</h1>
{{>layout/footer}}
  • {{>layout/header}}

    • 현재 머스테치 파일을 기준으로 다른 파일을 가져옴

    • include라고 생각하면 됨



<tbody id="tbody">
{{#posts}}
 <tr>
   <td>{{id}}</td>
   <td>{{title}}</td>
 </tr>
{{/posts}}
</tbody>

  • {{#posts}}

    • posts 라는 List를 순회 (loof)

  • {{id}}

    • List에서 뽑아낸 객체의 필드

  • {{post.id}}

    • 객체의 필드 접근


+ Recent posts