Thymeleaf(타임리프) 에 대해 알아보자.
그래서 타임리프가 뭐임?
Spring Boot에서 권장하는 강력한 ‘Natural template engine’
Thymeleaf는 웹 및 웹이 아닌 환경 모두에서 작동할 수 있는 Java XML/XHTML/HTML5 템플릿 엔진입니다. MVC 기반 웹 애플리케이션의 뷰 레이어에서 XHTML/HTML5를 제공하는 데 더 적합하지만 오프라인 환경에서도 모든 XML 파일을 처리할 수 있습니다.
대충 Johnna 강하다는 뜻.
간단하게 사용자가 요청한 페이지에 들어갈 값들을 뿌려주는 친구라고 생각하는 것이 이해하기 쉽겠다.(피자 토핑 뿌리듯이. 나는 포테이토 피자 좋아함.)
통상 자바에서 웹 개발을 할 때 JSP / JSTL를 이용한다.
<% taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:if test="${sessionScope.member.name eq 'jstl구림'}">
<p> 진짜 좀 구린거 같음. </p>
</c:if>
//만약(if) 세션 안 멤버의 이름이 'jstl구림'이라면 "진짜 좀 구린거 같음."이라는 문구가 출력된다.
* JSP / JSTL
기본적으로 *.html 파일이 아닌 *.jsp 파일을 사용하게 되며 JSP/JSTL을 사용할 때에는 위와 같이 HTML 태그 밖에
JSTL에서 지원하는 문법을 사용 하게된다. 즉, HTML와 JSTL 혼재되며 코드가 늘어나면 늘어날 수록 구별하기 힘들어지게된다.
맞다. 짬뽕인줄 알고 비볐더니 스파게티 되는거다.
---------------------------------------------------------------------------------------------------------
그래서 타임리프는 순수한 HTML에 대한 유지력과 가독성을 높히기 위해 태그 내부에 작성하는 방식을 채택했다.
또한, 타임리프로 작성된 파일은 HTML 원형을 유지하기 때문에 직접 웹 브라우저(크롬,웨일,엣지 등) 에서 열더라도 내용을
확인 할 수 있고, 서버를 거친다면 아래처럼 동적인 페이지를 구현 하게된다.
@GetMapping("/test")
public String testText(Model model){
model.addAttribute("test", "jstl이 좀 구리긴 함 ㅋㅋ");
return "test/test-page";
}
컨트롤러에서 모델에 담아 보내면
<html xmlns:th="http://www.thymeleaf.org">
<span th:text="${test}">JSTL 구리다고 넣는 칸임.</span>
</html>
//test라는 Attribute에 "jstl이 좀 구리긴 함 ㅋㅋ" 라는 값을 보냈으니 그대로 출력된다.
//본래의 "JSTL 구리다고 넣는 칸임" 이라는 문장에서 test로 바꿔치기 되는 것.
잘 들어가는 것 같다. 위에 th:text는 타임리프 문법 중 하나다. 다음 글에 올릴 예정.
사실 보는 사람(사용자)의 입장에서는 JSTL을 쓰나 타임리프를 쓰나 (애초에 뭐 쓰는지 관심도 없다.) 화면만 잘 나오면 그만이지만 개발하는 사람의 입장에서는 가독성과 디버깅에 용이하다는 것은 굉장히 중요한 사항이다.라섹 수술 두 번 하고싶지 않다면 빨리빨리 가독성 좋은 쪽으로 갈아타도록 하자. 요즘 불경기에 수술비 비싸다.
그러니 앞으로 우리 같이 차근차근 타임리프에 대해 배워보도록 하자. 좋은건 나눠 쓰라는 말도 있지 않은가.
참고로 나도 초보라 잘못 된 정보가 있을 수 있다.
고로, 반박 시 님 말이 맞음.
편안한 밤 보내시길 :)