JSP 및 스프링 뷰를 대체할 최고의 템플릿 언어.

예전에 Scalate 소개글인지 뭔지 여튼 올렸었는데.

괜히 소개한것 같다. 퍼포먼스가 안나온다는 보고도 있고. 나도 경험했고, 실무에 쓰기엔 스칼라 기반은 아직도 팀 커뮤니케이션에 안맞는다는 결론이 나왔다.

짬뽕이 좋은 것만은 아닌 것 같다.

만약 자바 대신 스칼라 프로젝트라면 스칼렛은 더좋은 선택이지만, 자바 프로젝트라면, 괜한고생 하지 않길 바란다.

어쨌든 오늘 JSP와 JSTL 등의 기본 템플릿 언어의 지루함을 해소해줄 2가지 템플릿 엔진을 소개하겠다.

모두 그냥 JSP 페이지 및 스프링 프레임워크에서 사용 가능하다. 취향에 맞게 쓰면 된다.

1. jade4j

프로젝트 사이트 : https://github.com/neuland/jade4j

node.js 를 알게 된 개발자라면 express 웹 프레임워크와, 그 유명한 템플릿 언어 jade를 기억한다면,

당신은 바로 이 프로젝트를 적용해도 손색이 없을 것이다.

jade 공식 페이지에서 다른 언어 바인딩 리스트에 올라와 있으며, jade 3 템플릿 구조와 거의 완벽하게 호환이 가능하다.

비록 커뮤니티 참여로 이루어지긴 해도 상당히 안정적으로 돌아가며, jade 오류 발생시 JSP하고는 차원이 다른 친절함의 극치 오류 페이지를 보여줄 것이다. (play! framework 배낀 느낌 나도 그래도 좋구랴.)

jade4j 를 적용하는 방법은 프로젝트 사이트를 보면 되고,

jade 템플릿 사용법은 그냥 jade 공식 홈페이지를 가면 된다. 다 되니 걱정말고 쓰도록 하자. (http://jade-lang.com/)

자바 웹 프로젝트로 jade 채용하기 전에 충분한 연습이 필요하겠지만, 원체 js 로 만든거라 실습이 쉽게 가능하니 문제는 없을 것이다. 실제 사례도 있기 때문에 실무에 써도 문제될 거 없다.

참고로 이녀석의 실행식(Expression)은 아파치 JEXL(http://commons.apache.org/proper/commons-jexl/)을 채용했다.

그냥 JSP 느낌 나는 실행식이라고 생각하면 된다. 자바답다고. 그러니 자바답게 jade 쓰면 된다.

JSTL 에서는 메서드 지원 안되고 함수 쓰려면 JSTL 태그 정의를 해야 하지만 이건 그딴거 필요없이 바인딩 후 호출하자.

2. rythm

프로젝트 사이트 : https://github.com/greenlaw110/rythm

외국의 닷넷 아닌 웹 개발자들에게 많은 부러움을 산 ASP.NET MVC 3 의 강력한 템플릿 엔진인 Razor 엔진의 자바 버전이라고 보면 된다.

HTML 깨뜨릴 일이 전혀 없으며, 깔끔하고, 문자열과 XML 문법만 잘지키면 완벽하게 소화 가능한 매력이 숨어있다고 보면 된다.

참고로 Play! Framework 의 기본 템플릿 엔진이 이 Razor 기반의 변형 엔진인데, 이녀석은 자바 MVC에 맞게 템플릿을 구성했다고 봐도 좋을 것이다.

게다가 이녀석은 JSP 및 스프링 프레임워크, 심지어 Play! Framework 뷰 엔진으로도 지원한다.

중국과 호주 자바 웹 실제 프로젝트에 투입해도 탈 하나 없는 뷰 엔진이기 때문에 HTML 안깨뜨리고 깔쌈하게 하고자 하는 웹 프로젝트에 이 템플릿을 고려해도 좋을 것이다.

JSTL과는 달리 메서드 호출도 지원되며, Transformer를 통하여 템플릿을 확장할 수 있다. 메서드 확장 개념으로.

번외 3. Thymeleaf

프로젝트 사이트 : http://www.thymeleaf.org/

요즘 인기를 누린다는 블로그 글이 있길래 봤더니.. 닷넷의 Spark 비슷한 HTML 태그/속성 기반의 템플릿 언어다.

대신, namespace 제공 후 사용으로 HTML/XML 처럼 친숙하며, JSP 처럼 태그를 깨뜨리거나 중간에 박는 형식을 최대한 줄임으로써 기존 HTML 사용하면서 깔끔하게 데이터를 출력해주는 괜찮은 템플릿 엔진이다.

현재 2.1 버전이 안정화된 최신이며 쌩 JSP 및 스프링도 지원되니 주저없어 테스트해도 무방할 것이다. 실무에 써도 무방하다.

여담으로 JSTL의 경우 2부터 메서드 호출 지원이 되기는 하는데 여태까지 프로젝트에서 JSTL 2 쓰는 프로젝트를 못봤다.

기술이 좋아지면 뭐해.. 편리해지게 해줘도 당췌 쓰질 않는데.

composite / 2013년 12월 4일 / 미분류
태그:, , , , , , , , , , , ,

답글 남기기

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