2016년 10월 24일 월요일

Springboot Template engine. JSP vs Velocity vs Thymeleaf (1)

스프링부트와 템플릿 엔진 이야기

1. JSP
jsp를 쓰려니까 뭔가 추가해야할 것이 많더라. 그래서 그냥 패스.

2. Velocity
그래서 velocity를 썼는데, 1.4.0Release 버전부터 deprecated 된것이 아닌가.
이미 적용한 데는 놔두고, 다음 작업할 곳은 다른 엔진을 찾아 보기로 했다.

3. Thymeleaf
여러가지가 있었던것 같지만, freemaker, thymeleaf 정도 손에 꼽혔다.

구글 트렌드를 한번 검색해보니 대충 이렇더라.


그래서 왠지 스프링에서도 밀고 있는 것 같은 thymeleaf를 써보기로 했다.
(react 등 client-side rendering 등은 일단 다음 기회에...)



3.1. 첫인상

뭐 특별한 것은 없었다. velocity engine을 ViewResolver로 사용하기 위해 만들었던 javaConfig 파일을 주석처리 하고 application.properties 몇 줄 수정하는 것으로 thymeleaf가 동작한다.

3.2 첫 난관

template layout을 만들 때 고생을 조금 했다.
html tag를 적극적으로 활용하다 보니,
'어떤 부분이 replace 되는 건가?' 하는 부분들이 직관적으로 보이지가 않았다.

웹브라우져에서도 본래 레이아웃을 확인 할 수 있는게 장점이라는데(?)
그렇게 하기 위해서는 각 페이지 레이아웃을 반복적으로? 사용해줘야 한다.
굳이 그럴 필요가 있나???

한편, thymeleaf를 좀 쉽게 사용하려면 `thymeleaf-layout-dialect` 이걸 활용할 필요가 있는 것 같다.

스프링부트 dependency에서 spring-boot-starter-thymeleaf을 포함하면 해당 패키지에 같이 포함되어 있다. - 다행이다 -


3.3 그 이후

그렇게 Velocity로 만들었던 폼들을 thymeleaf로 변환하고 보니,
뭐 딱히 템플릿 엔진의 기능을 많이 안써서 그런지 별 차이를 못 느끼겠다.

아무래도 html tag 형식을 빌려쓰고 있는 thymeleaf는 표현의 제약이 느껴진다.
마법의 태그(?)로 보이는 `th:block`과 `th:remove="tag"`를 잘 활용하는 방법 밖에는 없는 것 같다.


EDIT:
그런데 또 막상 쓰다보니 표현의 제약 그런거 별로 없더라.
어떻게 풀어서 쓰면 다 된다;;;

댓글 없음:

댓글 쓰기