Thymeleaf 죽이네.

“백리향 잎사귀”

http://www.thymeleaf.org/doc/Natural%20Templating%20in%20Spring%20MVC%20with%20Thymeleaf%2020120217.pdf

뭔지 알고싶다면 위에 있는 발표자료를 쭉 훑어보시면 됩니다.

일단.. 저는 뷰 만들 때 프리마커나 벨로시티같은 템플릿 엔진을 쓰지 않습니다. 그냥 JSP + JSTL + Spring Tags를 사용합니다. 사이트매쉬나 타일즈같은 레이아웃 엔진도 쓰지 않습니다. 그냥 JSP 태그파일을 씁니다. 랜더링 속도가 전체 앱 성능에 얼마나 영향을 준다고 그 불편한 문법과 설정을 적용하며 애플리케이션에 덕지 덕지 붙이지 싫습니다. 성능이 문제면 차라리 varnish 같은걸 추가해서 캐싱을 하죠 뭐. 잡다구리한걸 잔뜩 붙이고 싶지 않아요.

그런데 진짜 괜찮은 템플릿 엔진이 있군요… 타임리프라.. 캬.. JSP 개발도 마찬가지고 프리마커나 벨로시티를 쓸때도 마찬가지인데.. 뭐냐면..

보통 뷰 만들 때 HTML로 프로토타입을 만들기 나름이죠. 이때는 편하게 HTML로 만들어서 서버를 띄우지 않고 브라우저에서 바로바로 확인하면서 HTML/CSS/JS 코딩을 합니다. 어느정도 됐다 싶으면 그걸 JSP로 변경합니다. 그럼 이제부턴 지옥입니다. 매번 서버를 실행해야지만 뷰를 변경할 수 있죠. 이게 아주 짜증입니다. 그런데 타임리프는 안그래요. 일단 파일을 변경할 필요없이 HTML 그대로 두면 되고 그 상태 그대로 서버를 띄우고 보면 템플릿이 적용되고, 서버를 띄우지 않고 웹 브라우저에서 그냥 열어도 작업이 가능한 HTML 그대로 보여줍니다. JSP나 프리마커 뷰로 바꾼뒤부터는 그렇게 안되기 때문에 거기에 비해서 타임리프 뷰는 개발이 훨씬 편하겠죠.

어떻게 그런지는 안갈쳐 드리죠. 위에 있는 PDF를 보세요. 이 기능을 이름하여 내츄럴 템플릿이라고 하더군요. 이름 참 잘 지었네요.

추가로..

  • 스프링 바인딩 지원
  • 스프링 PE 지원
  • 스프링 EL 지원
등 스프링과 아주 합이 잘 맞는 템플릿 엔진인듯 합니다.

앞으론 이걸 한번 써봐야겠습니다.

13 thoughts on “Thymeleaf 죽이네.”

  1. 너무 당연하게 느껴져서 잊고 있었던 불편함을 다시 생각나게 만드는군….
    만든 다음에 마크업 수정할 때마다 일일이 적용하는 것도 완전 피곤!!

    1. 그니까요. 프론트엔드 개발하고 서버 개발하고 제대로 좀 분리해서 개발할 수 있으면 좋겠는데 JSP로 바꾸는 순간부터 그게 안되는데.. 이걸쓰면 어느정도 가능할것 같아요.

      대신 태그에 attributes를 많이 써야되서 조금 지져분해질듯.

  2. 저도 계속 보고 있던 템플릿 엔진입니다만, 혹시 레이아웃(타일즈나 사이트메시)기능도 되나요?
    요즘 RoR이나 Django등은 템플릿 엔진에 레이아웃 기능도 함께 들어가 있는데 이건 어떤지 자료를 못 찾겠네요.

    1. 이건 가이드 문서를 PDF로 내려받게 하더라구요. PDF에서 layout으로 검색해 봤으니 딱히 자료가 없네요.

      근데.. 레이아웃 기능을 넣기 시작하면 내추럴 템플릿으론느 못하지 않을까 싶어요. 흠..

      1. 몇가지 더 찾아봤는데, 레이아웃은 아니고 jsp:include 비슷한 것을 약단 더 편하게 지원은 해주고 있네요.
        말씀대로 레이아웃 매니저가 붙게 되면 내추럴 템플릿은 되기 힘들죠.

        하지만, 사이트 개발할 때 레이아웃 템플릿 기능은 사실상 필수인지라, 좀 더 두고봐야겠네요.

        1. 넹. 페이지가 많은 앱에서는 레이아웃 엔진이 필요한데요. 페이지 갯수가 얼마 되지 않는다면 레이아웃 엔진 없이 그냥 써도 되겠네요.

          흠.. HTML 자체에서는 어떻게 레이아웃 엔진 기능을 넣을 계획은 없을까요.

  3. 와우 이거 정말 죽이네요 ~ ㅋㅋ
    이거 layout템플렛엔진이랑 연동만 되면 최고가 될 수 있을 것 같네요..

    1. JRebel이 잘 안먹을때도 있어서 오히려 혼란이 생기더라구요. 언제 잘 되고 안되는지 파악해서 잘 써먹으면 펀할테지만 그게 더 귀찮더라구요. 그리고 서버 리스타트 자체가 귀찮은게 아니라..

      뷰 개발이랑 서버 개발이 제대로 분리가 되지 않는게 귀찮은거죠.

  4. 거의 3년 전 포스팅이지만 혹시 그 이후에 thymeleaf 사용한 소감이 어떠신가 궁금해서요. 그리고 혹시 지금 thymeleaf를 사용하고 계신가요? 아니면 다시 jsp로 돌아가셨나요? ^^
    저도 지금 thymeleaf를 써볼까 해서요. 이제는 layout 을 지원하는 것 같네요. http://www.thymeleaf.org/doc/articles/layouts.html.

Leave a Reply

Your email address will not be published. Required fields are marked *