템플릿 엔진은 지정된 템플릿 양식과 데이터를 합쳐 HTML 문서를 출력하는 소프트웨어이다. 웹사이트 화면을 어떤 형태로 만들지 도와주는 양식이라고 할 수 있다.
템플릿 엔진을 사용하면 하나의 템플릿으로 여러 페이지를 렌더링할 수 있기 때문에 재사용성이 높고 유지보수가 용이하다. 템플릿 엔진은 서버 사이드 템플릿 엔진과 클라이언트 사이드 템플릿 엔진으로 나눌 수 있다.
서버 사이드 템플릿 엔진은 서버에서 DB 혹은 API에서 가져온 데이터를 미리 정의된 템플릿에 넣어 HTML을 그린 뒤 클라이언트에게 전달해주는 역할을 한다. HTML 코드에서 고정적으로 사용되는 부분은 템플릿으로 만들어두고, 동적으로 생성되는 부분만 템플릿의 특정 장소에 끼워 넣는 방식으로 동작한다.
서버에서 HTML 결과를 다 만든 후 브라우저에 전달하기 때문에 화면 이동이 많은 곳에서 주로 사용된다.
Logic-less template Engine로 가장 심플한 템플릿 엔진이다. Mustache는 문법이 쉽고 View와 서버의 역할이 명확하게 분리된다.
이전 프로젝트에서 사용했던 템플릿 엔진인 Thymeleaf는 HTML 태그에 속성으로 템플릿 기능을 사용하는 방식으로 비교적 문법이 어렵다. 그에 반해 Mustache는 문법이 쉽다.
Mustache는 logic-less로 클라이언트단에 로직을 제외한 데이터만을 전달한다. 일반적으로 view에 비지니스 로직을 가져가게 되면 코드가 복잡해지고 서버/클라이언트 코드가 뒤섞여버려 유지보수가 어려워진다. Mustache를 사용하면 로직 코드를 사용하지 않아 view의 역할과 서버의 역할이 명확하게 분리되는 장점이 있다.
또한, Ruby, JavaScript, Python, Java 등 대부분의 언어를 지원한다. 자바에서는 서버 템플릿 엔진으로, 자바스크립트에서는 클라이언트 템플릿 엔진으로 사용할 수 있다. 즉, 서버와 클라이언트 템플릿 엔진 양쪽에서 모두 사용할 수 있다.
소소하게는 스프링 부트에서 공식 지원하는 템플릿 엔진이기 때문에 의존성만 추가하면 추가 설정 없이 바로 사용할 수 있는 장점이 있다.
참고