개발/백엔드

타임리프 템플릿 엔진이 뭐임? what is thymeleaf template engine?

나한나한나한나 2024. 6. 14. 16:38

타임리프(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