스프링부트로 게시판을 구현하다 처음으로 mustache를 사용해보았다. 그러나 mustache에 대해 잘 모르고 사용하다보니 왜 사용하며, 어떤 단점이 있는지 알 수 없어 불편했다.
HTML
: compile 없이 클라이언트 쪽 브라우저에서 해석해 곧바로 나타남
JSP
: 서버에서 compile 후 html 형식을 결과값으로 클라이언트 쪽으로 보내주면, 브라우저에서 전달받은 html을 해석
HTML과 템플릿엔진인 JSP는 비교대상이 될 수 없다!
: 지정된 템플릿 양식과 데이터가 합쳐져 html 문서를 만들어주는 SW
: 서블릿(서버)에서 동작하는 템플릿
템플릿 양식과 데이터를 이용해 html을 생성하여 브라우저에 전달한다.
JSP(+Spring)를 비롯한 서버 템플릿 엔진은 서버에서 구동
즉, 서버에서 Java 코드로 문자열을 만든 뒤 이 문자열을 html로 변환해 브라우저로 전달한다.
: 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
는 스프링부트에서 공식으로 지원하는 템플릿 엔진
스프링 진영에서 적극적으로 밀고 있지만 문법이 어렵다는 단점이 있다.
html 태그에 속성으로 템플릿 기능을 사용하는 방식에 진입장벽이 높게 느껴질 수 있다.
(Vue.js 사용 경험이 있다면 태그 속성 방식에 익숙해 쉽게 느껴질 수 있다.)
도움받은 자료
JSP vs Mustache 참고
이동욱님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스