[Thymeleaf] 타임리프

Harry park·2022년 6월 7일
0

Thymeleaf

목록 보기
1/3
post-thumbnail
post-custom-banner

📌 타임리프(Thymeleaf) 개요

📖 정의

✍ 타임리프(Thymeleaf) 소개

타임리프(Thymeleaf)는 자바 라이브러리이며, 웹과 환경 양쪽에서 TEXT, HTML, XML, Javascript, CSS를 생성할 수 있는 템플릿 엔진이다.
스프링 MVC와의 통합 모듈을 제공하며, 애플리케이션에서 JSP로 만든 기능들을 완전히 대체할 수 있다.
즉, 타임리프(Thymeleaf)는 View Templete Engine으로 JSP, Freemarker와 같이 서버에서 클라이언트에게 응답할 브라우저 화면을 만들어주는 역할을 한다.

📖 목표

✍ 타임리프(Thymeleaf) 목표

타임리프(Thymeleaf)의 주요목표는 세련되고 잘 다듬어진 템플릿을 제공하는 것이다. 이는 유지관리 및 확장이 쉽도록 하는 것을 말한다.
↳ Natural Templates : 기존 HTML 코드와 구조를 변경하지 않고 덧붙이는 방식이다.
↳ Standard + SpringStandard를 통한 템플릿 생성, dialect를 통한 타임리프 확장.

📖 장점

✍ 타임리프(Thymeleaf) 장점

  • 코드를 변경하지 않기 때문에 서버팀과 퍼블팀 간의 협업이 편해진다.
  • 비즈니스 로직과 분리되어 View에 집중할 수 있다.
  • 서버상에서 동작하지 않아도 되기 때문에, 서버 동작 없이 화면을 확인할 수 있다. (서버가 구동하지 않는 경우 정적 컨텐츠)
  • 📎 Spring Boot에서 Thymeleaf

    ✍ 타임리프(Thymeleaf)에서 SpringBoot를 권장하는 이유

    ↳ Spring Boot에서는 JSP 설정과 관련하여 자동 설정을 지원하지 않는다.
    그에 반해 타임리프는 Dependency만 추가하면 자동으로 설정되어 간편하게 사용할 수 있다.

    📌 타임리프(Thymeleaf) 적용

    📖 의존성 추가

    gradle
    build.gradle파일에 아래의 내용을 추가한다.
    org.springframework.boot:spring-boot-starter-thymeleaf

    // 코드중략
    dependencies {
      // 코드중략
      compile "org.springframework.boot:spring-boot-starter-thymeleaf"
      // 코드중략
    }
    // 코드중략

    Maven
    pom.xml파일에 아래의 내용을 추가한다.

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

    📖 Template file 위치

    src/main/resources/tempalte 하위에 기능에 따라 directory 구성
    ✍ 정적인 자원은 src/main/resources/static 에 구성
    ✍ 공통으로 사용되는 template fragment들은 layout, commons 혹은 fragments를 만들어서 구성

    📖 HTML에 네임스페이스(Namespace) 추가

    ✍ HTML문서에 네임스페이스 추가 방법

    xmlns:th="http://www.thymeleaf.org"HTML에 추가한다.

    <!DOCTYPE html>
    <!-- namespace 추가 -->
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        
    </body>
    </html>

    개인적으로 공부하며 기록한 내용으로, 틀린 내용이 있는 경우 덧글을 달아주시면 감사하겠습니다. 😍
    profile
    Jr. Backend Engineer
    post-custom-banner

    0개의 댓글