Web/기타

[mustache] spring boot와 mustache 1

  • -

SpringBoot에서는 was에 종속적인 JSP를 더 이상 기본으로는 지원하지 않는다.

물론 추가적인 설정을 통해서 사용할 수는 있지만 기본에서 빠진 녀석을 억지로 데려다가 사용하기는 왠지 꺼림직 하다. (암묵적으로 자바 진영의 웹 생태계를 지배하는 Spring의 위력이 새삼 느껴진다.)

이제 SpringBoot에서 미는 녀석들은 Thymeleaf, FreeMarker, Mustache가 있다. 이중 컨셉만 바꾼다면 가장 배우기 쉬운 녀석이 Mustache인것 같다. 

이번 포스트에서는 넘나 간단한 Mustache 사용법을 SpringBoot 기반에서 살펴보자.

 

Mustache란?

 

mustache 웹사이트

그냥 간단히 github에 둥지를 틀고 있다. 너무나 썰렁해서 유지보수는 돼나? 싶을 정도다 ㅎ

 

{{ 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

 

logic-less template

Mustache가 추구하는 방향은 logic-less template이다. 즉 화면단에서는 로직을 제외한 데이터만 전달하겠다는 의도이다.

일반적으로 view에 비지니스 로직을 가져가게 되면 코드가 복잡해지고 특히나 다지이너/퍼블리셔 직군에서 이해하기가 매우 어려워진다. 따라서 JSP에서도 EL이나 JSTL등을 이용했었다. 추가로 <% %> 류의 태그들을 이용해서 로직을 작성할 수도 있었다.

mustache에서는 데이터와 간단한 출력문, 조건문 등으로만 구성된다.

이런 형태의 장점은 

  • view와 logic이 분리되어 코드가 간결해진다.
  • 화면에는 data만 전달되기 때문에 나중에 template engine을 다른 것으로 변경할 때도 처리할 일이 없어진다. 즉 유지보수성이 좋아진다.
  • 그러다 보니 학습해야 할 내용도 엄청 짧다. (ㅎㅎ)

정도로 생각해볼 수 있다.

 

SpringBoot 연동

 

의존성

SpringBoot 프로젝트를 세팅하면서 template로 mustache를 선택하면 아래와 같이 dependency가 설정된다.

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mustache</artifactId>
</dependency>

 

application.yml

springboot와 mustache는 잘 연동되어있기 때문에 여러가지 설정들을 처리해줄 수 있다. 대부분은 기본 값으로 설정하면 되는데 상황에 따라 다음의 설정들은 고려해볼만 하다.

spring:
  mustache:
    # 1. request attribute의 내용을 model에 추가한다.
    expose-request-attributes: true
    # 2. session attribute의 내용을 model에 추가한다.
    expose-session-attributes: true

1, 2번 사항은 HttpServletRequest나 HttpSession을 이용하려면 필요한 옵션으로 보인다.

 

기타

 

IDE 지원

이클립스에서는 mustache를 사용하기 위한 플러그인이 현재(2022-03-28) 기준으로는 없는것 같다. 따라서 아래와 같이 html 파일과 연결해서 사용해야 한다.

[eclipse] eclipse에서 mustache 개발 (tistory.com)

 

[eclipse] eclipse에서 mustache 개발

열심히 vscode에서 spring boot와 mustache로 개발을 하다가 느닷없이 vscode가 자주 뻗는 증상이 왔다. 그래서 부랴 부랴 eclipse에서 개발을 이어가려고 하는데... 아뿔싸. eclipse에서는 mustahe를 지원하는 p.

goodteacher.tistory.com

 

vscode에서는 다음의 extension이 제공되므로 좀 더 편하게 작업이 가능하다.

[vscode]mustache template plugin (tistory.com)

 

[vscode]mustache template plugin

Spring 진영에서는 jsp를 버렸다!! 그 대안으로 밀고 있는 녀석은 Thymeleaf. https://www.thymeleaf.org/ Thymeleaf Integrations galore Eclipse, IntelliJ IDEA, Spring, Play, even the up-and-coming Model-V..

goodteacher.tistory.com

 

그럼 본격적으로 mustache를 사용해보자.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.