타임리프(Thymeleaf)는 자바 기반 웹 애플리케이션을 위한 템플릿 엔진입니다. 타임리프는 서버 사이드에서 HTML을 생성하고, 이를 클라이언트에 전달하여 동적인 웹 페이지를 구성하는 데 사용됩니다. 특히, Spring Framework와의 통합이 잘 되어 있어 많은 Spring 애플리케이션에서 사용됩니다.
더보기
서버 사이드에서 HTML을 생성한다고? SSR인가? -> 맞다고 함
요리할 때 쓰는 허브 이름(타임)에서 따온 건가? -> 맞다고 함
- 자연 템플릿: 타임리프의 가장 큰 특징 중 하나는 템플릿이 브라우저에서 그대로 유효한 HTML로 볼 수 있다는 점입니다. 마치 요리에서 타임이 다양한 요리에 자연스럽게 어우러지는 것처럼, 타임리프도 기존 HTML에 자연스럽게 어우러집니다.
- 심플함과 유연성: 타임이 요리의 맛을 더하듯이, 타임리프는 HTML 템플릿에 동적 콘텐츠를 쉽게 추가하여 웹 페이지를 더 유연하게 만들 수 있습니다.
타임리프의 주요 특징과 기능:
- 자연 템플릿(Natural Templates):
- 타임리프 템플릿은 HTML 파일 자체로도 완전한 HTML 문서로 유효합니다. 즉, 타임리프 템플릿은 브라우저에서 그대로 열어도 유효한 HTML로 동작합니다. 이는 개발자와 디자이너가 동시에 작업하기에 매우 유용합니다.
- 표현식 언어(Expressions):
- 타임리프는 다양한 표현식을 통해 데이터를 쉽게 삽입하고 처리할 수 있습니다. 예를 들어, ${...}를 사용하여 변수를 참조하거나, #{}를 사용하여 메시지를 로컬라이즈 할 수 있습니다.
- 메시지를 로컬라이즈(Localize)한다는 것은 애플리케이션에서 사용하는 메시지(텍스트)를 여러 언어로 번역하고, 사용자에게 적절한 언어로 표시하는 것을 의미합니다.
- 타임리프는 다양한 표현식을 통해 데이터를 쉽게 삽입하고 처리할 수 있습니다. 예를 들어, ${...}를 사용하여 변수를 참조하거나, #{}를 사용하여 메시지를 로컬라이즈 할 수 있습니다.
- 반복 처리 및 조건부 렌더링:
- th:each 속성을 사용하여 컬렉션을 반복 처리할 수 있고, th:if와 th:unless 속성을 사용하여 조건부로 HTML 요소를 렌더링할 수 있습니다.
- 템플릿 레이아웃:
- 타임리프는 템플릿 조각을 재사용할 수 있는 기능을 제공합니다. th:insert와 th:replace 속성을 사용하여 다른 템플릿 파일의 내용을 삽입하거나 교체할 수 있습니다.
- URL 처리:
- @{...}를 사용하여 URL을 동적으로 생성할 수 있습니다. 이는 URL 매핑을 쉽게 처리하고 유지보수를 용이하게 합니다.
- Spring 통합:
- 타임리프는 Spring MVC와의 통합이 원활합니다. Spring의 모델 속성을 템플릿에서 쉽게 사용할 수 있으며, Spring의 폼 지원, 메시지 국제화 기능 등을 활용할 수 있습니다.
타임리프 예시 코드:
다음은 타임리프 템플릿에서 자주 사용되는 기능들을 예시로 보여줍니다.
예제 1: 변수 출력
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Example</title>
</head>
<body>
<p th:text="${message}">This is a placeholder text.</p>
</body>
</html>
이 예제에서는 ${message}
변수의 값을 HTML 문서에 출력합니다.
예제 2: 반복 처리
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Example</title>
</head>
<body>
<ul>
<li th:each="item : ${items}" th:text="${item}">Item</li>
</ul>
</body>
</html>
이 예제에서는 items
컬렉션을 반복하여 각 항목을 <li>
요소로 출력합니다.
예제 3: 조건부 렌더링
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Example</title>
</head>
<body>
<p th:if="${user.loggedIn}" th:text="'Welcome, ' + ${user.name} + '!'">Welcome, User!</p>
<p th:unless="${user.loggedIn}">Please log in.</p>
</body>
</html>
이 예제에서는 user
객체의 loggedIn
속성에 따라 다른 메시지를 출력합니다.
타임리프는 이러한 기능들을 통해 자바 기반의 웹 애플리케이션에서 동적이고 유지보수하기 쉬운 HTML을 생성하는 데 매우 유용합니다. Spring Framework와의 뛰어난 통합성 덕분에, 많은 자바 개발자들이 타임리프를 선호하고 있습니다.
'개발 > 백엔드' 카테고리의 다른 글
spring-boot-starter-logging (0) | 2024.06.14 |
---|---|
spring-core가 뭐임? (0) | 2024.06.14 |
웹 MVC가 뭐임? what is web MVC (1) | 2024.06.14 |
톰캣이 뭐임? what is tomcat? (0) | 2024.06.14 |
[spring] 스프링을 쓰는 10가지 이유 (1) | 2024.06.13 |