스프링부트로 게시판을 구현하다 처음으로 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로 혼자 구현하는 웹 서비스