JSP vs Mustache vs Thymeleaf

윤경·2022년 2월 7일
0
post-thumbnail

스프링부트로 게시판을 구현하다 처음으로 mustache를 사용해보았다. 그러나 mustache에 대해 잘 모르고 사용하다보니 왜 사용하며, 어떤 단점이 있는지 알 수 없어 불편했다.


우선, HTML과 JSP는 비교대상이 될 수 없다. 🙅‍♀️

HTML: compile 없이 클라이언트 쪽 브라우저에서 해석해 곧바로 나타남
JSP: 서버에서 compile 후 html 형식을 결과값으로 클라이언트 쪽으로 보내주면, 브라우저에서 전달받은 html을 해석

HTML과 템플릿엔진인 JSP는 비교대상이 될 수 없다!

Template Engine

: 지정된 템플릿 양식과 데이터가 합쳐져 html 문서를 만들어주는 SW

  • 프로그램 로직과 프레젠테이션 계층을 분리하기 위한 수단
  • 프레젠테이션 계층에서 로직을 쉽게 표현하고, 개발의 유연성을 향상 시키며 유지보수의 효율 또한 향상된다.

서버 템플릿 엔진 (SSR: Server Side Rendering)

: 서블릿(서버)에서 동작하는 템플릿
템플릿 양식과 데이터를 이용해 html을 생성하여 브라우저에 전달한다.

JSP(+Spring)를 비롯한 서버 템플릿 엔진은 서버에서 구동
즉, 서버에서 Java 코드로 문자열을 만든 뒤 이 문자열을 html로 변환해 브라우저로 전달한다.

클라이언트 템플릿 엔진 (CSR: Client Side Rendering)

: React, Vue, Anguler와 같이 서버에서 데이터를 전달받고 전달받은 데이터를 가지고 웹 화면을 꾸며주는 라이브러리 (혹은 프레임워크)
SPA(Single Page Application) 환경으로 웹 서비스를 개발하는 업체가 점점 늘어나며 많이 사용되고 있다.

자바스크립트는 브라우저 위에서 구동
브라우저에서 구동될 때는 서버 템플릿 엔진의 손을 벗어나 제어할 수 없다.

Mustache

: JSP와 같이 html을 만들어주는 템플릿 엔진

로직 코드를 사용할 수 없어 View 역할과 서버의 역할을 명확히 분리한다.
Mustache.js와 Mustache.java 이렇게 두 가지가 존재하여 하나의 문법으로 클라이언트/서버 템플릿으로 모두 사용 가능하다.

JSP vs Mustache

  • JSP는 Java 언어를 지원하고, Mustache는 Java는 물론, 현존하는 대부분의 언어를 지원
  • JSP는 로직 구현이 가능하고, Mustache로직 구현이 불가능 (view 역할에만 충실)
  • JSP는 스프링부트에서는 권장하지 않는 템플릿 엔진, Mustache스프링부트에서 공식으로 지원하는 템플릿 엔진

그럼 김영한님 강의를 들을 때 사용하던 Thymeleaf는? 🤷🏻‍♀️

스프링 진영에서 적극적으로 밀고 있지만 문법이 어렵다는 단점이 있다.
html 태그에 속성으로 템플릿 기능을 사용하는 방식에 진입장벽이 높게 느껴질 수 있다.
(Vue.js 사용 경험이 있다면 태그 속성 방식에 익숙해 쉽게 느껴질 수 있다.)


도움받은 자료

JSP vs Mustache 참고
이동욱님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

profile
개발 바보 이사 중

0개의 댓글