본문 바로가기

좋아하는 것_매직IT/1.spring

심플한 템플릿 엔진 머스테치(mustache)를 소개합니다

반응형


블로그 목적 

- 심플한 템플릿 엔진 머스테치에 대해서 공부및 정리후 나만의 노하우와 지식을 공유.

블로그 요약

· 머스테치에 대해서 알아본다.
· 머스테치를 사용해서 간단한 샘플예제를 구현해본다.

블로그 상세

우선, 머스테치에 대해서 알아볼까요?

머스테치(mustache) 는 제 관점으로 가장 심플한 템플릿 엔진 중 하나이고요, 다양한 언어를 지원하기도 합니다.
아래는 홈페이지 입니다.
https://mustache.github.io/

 

{{ mustache }}

Logic-less templates. Available in Ruby, JavaScript, Python, Erlang, Elixir, PHP, Perl, Raku, Objective-C, Java, C#/.NET, Android, C++, CFEngine, Go, Lua, ooc, ActionScript, ColdFusion, Scala, Clojure[Script], Clojure, Fantom, CoffeeScript, D, Haskell, XQu

mustache.github.io

머스테치의 장점을 공부해본 결과...다음과 같은 장점이 있다는 것을 알게되었습니다.
 - 하나, 클라이언트/서버 템플릿을 하나의 문법으로 모두 사용가능하게 합니다. 
    - 왜냐하면, Mustache.js / Mustache.java 2가지가 다 있거든요...
 - 둘, 공부해본결과 문법이 다른 템플릿 엔진보다 간단한것으로 보입니다. (물론 개인적인생각입니다. ^^; 절대적인건 아니니 오해는 하지 마시고요)
 - 셋, 로직 코드를 사용할 수 없는 구조라서, View 역할 과 서버의 역할을 명확하게 분리할 수 있다는 장점이 있네요..
 - 그외에도 제가 발견못한 여러가지 장점이 있을 수 있으니 한번 공부해보시면 좋을 것 같습니다.
 - 넷, 다양한 언어를 지원하고 있더라고요...아래 보시면 Ruby, JavaScript, Python, Erlang 등등 말이죠..

정말로 많은 언어들을 지원하고 있었습니다. 혹시나 해서 제가 좋아하는 언어인 C++ 을 꾹 눌러봤는데요...
README 페이지가 아래와 같이 보이고..

간단한 사용 예제와 출력이 있더라고요...해당 내용은 좀더 공부해봐야할것 같고요..
대개 웹페이지들구성은 SpringBoot 가 대세인지라서 현재 느낌(?) 으로는 활용성은 없을것 같으나, 왠지 모르게 반갑더라고요..^^;
그래서 그냥 소개해봤고요.. 이처럼 여러가지 언어들을 지원한다 정도로 머릿속에 넣어두시면 좋을 것 같네요..

 

그럼, 머스테치를 사용해서 간단한 샘플예제를 구현해 볼께요.

제가 좋아하는 툴인 인텔리제이를 활용해서 예제를 구현해 보려고 합니다.
우선 아래 의존성을 추가해서 프로젝트를 만듭니다. 
 - spring web / lombok / mustache

그러면, 아래와 같은 디렉토리 구조가 생기고요.. 
 - 아래의 디렉토리 중 templates 디렉토리를 관심있게 보셔야 합니다. 
 - 왜냐하면, 머스테치의 파일위치가 기본적으로 templates 디렉토리를 기반으로하고, 해당 위치에 머스테치 파일을 놓아두면, 스프링부트에서 자동으로 로딩하기 때문입니다.

그럼, 간단한 index 페이지 index.mustache 를 생성해 보겠습니다.

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="Content-Type" content="text/html">
    <title>Spring Boot Magic Project, Mustache </title>
</head>
<body>
    <h1>Magic Project, Spring Boot (feat. mustache)</h1>
</body>
</html>

간단하게 h1크기의 "Magic Project, Spring Boot (feat. mustache)" 를 웹페이지에 출력해주려고 합니다.
그다음, 진행해야 될것이 바로 URL 를 매핑해야 합니다. 
당근 URL 매핑은 Controller 에서 진행하게되고요....
그리고, 머스테치 스타터 때문에 Controller 에서 문자열을 반환할 경우 앞의 경로와 뒤의 파일 확장자는 자동으로 지정되게되어 있고요...
 - 경로는 : src/main/resources/templates
 - 확장자 : ".mustache"
로 구성됩니다.  
 - 다시말해서, 아래코드는 index 를 반환하게되고요...
   - 경로와 확장자를 자동으로 붙여주어...
     - src/main/resources/templates/index.mustache로 전화되고, View Resolver 가 처리하게 되는구조입니다.
 - 참고로, View Resolver 는 URL 요청의 결과를 전달한 type 과 value 를 지정하는 관리자 격으로 머릿속에 넣어두시면 됩니다. 

package com.example.mustache.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class MustacheController {
    @GetMapping("/")
    public String index() {
        return "index";
    }
}


그럼, 간단하게 머스테치를 실행할 코드는 구성된거고요.. 그럼, 인텔리제이에서 아래 재생 버튼을 클릭해야 실행해 보겠습니다.

그럼 아래와 같이 실행이 되고요..

 

웹브라우저로  확인해 보겠습니다. (아래와 같이 정상처리되고 있음을 확인할수있었습니다.)

결론


이제까지, 머스테치에 대해서 간단하게 알아보고, 머스테치를 이용한 간단한 샘플프로그램을 작성해봤습니다. 
조금더 공부를 해서 머스테치에 대해서 익숙해지도록 노력을 해봐야 겠네요...
머스테치말고, Thymeleaf 도 있는데요...Spring 진영에서 적극적으로 밀고 있는걸로 알고 있습니다. 

오늘도 마지막까지 제 글을 끝까지 읽어주셔서 진심으로 감사드리고, 제 글이 조금이라도 여러분의 각자의 삶을 살아가시는데 도움이 되셨길 기원합니다.
앞으로도 더욱 좋은 블로그를 남기는 제가 되도록 노력하겠습니다.
그리고, 제 글을 읽으시면 말이 됩니다.
항상 말에는 반드시 삶을 움직이는 힘이 있습니다.
제가 열심히 정성스럽게 정리한 저만의 지식과 1일 1블로그하는 제 블로그에 담긴 글들을 통해서,
여러분들의 삶과 운명을 반드시 조각하고 움직이시길 기원합니다.

이상입니다. 감사합니다.



 

 

 

 

 




728x90
300x250