반응형
🤍서버 템플릿 엔진이란?
- 템플릿 엔진이란, 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어를 이야기함.
- JSP, Freemarker - 서버 템플릿 엔진 / 리액트, 뷰 - 클라이언트 템플릿 엔진
- 서버 템플릿 엔진은 서버에서 구동됨.
- 서버 템플릿 엔진을 이용한 화면 생성은 서버에서 Java 코드로 문자열을 만든 뒤 이 문자열을 HTML로 변환하여 브라우저로 전달함.
- 반대로 자바스크립트는 브라우저 위에서 작동하기 때문에 뷰,리액트를 이용한 SPA는 브라우저에서 화면을 생성함. 서버에서는 Json, Xml 형식의 데이터만 전달하고 클라이언트에서 조립합.
🤍머스테치란?
- 머스테치는 루비, 자바스크립트, 파이썬, PHP, 자바 등 현존하는 대부분 언어를 지원하는 가장 심플한 템플릿 엔진임.
자바 진영에서는 JSP, Freemarker, Thymeleaf 등 다양한 서버 템플릿 엔진이 존재함. JSP는 스프링부트에서 권장하지 않고 Thymeleaf는 적극적으로 밀고 있지만 문법이 어려움. 머스테치 장점은?
- 문법이 다른 템플릿 엔진보다 심플함.
- View 역할과 서버의 역할이 명확하게 분리됨.
- Mustache.js, Mustache.java 2가지 다 있어 하나의 문법만으로 클라이언트/서버 템플릿 모두 사용 가능함.
- 인텔리제이 커뮤니티 버전을 사용해도 플러그인을 사용할 수 있음!!🙋♂️
1. 머스테치 플러그인 설치
2. 머스테치 의존성 등록
스프링 공식 지원 템플릿 엔진이기 때문에 의존성 하나만 추가하면 추가 설정이 필요하지 않음.
implementation('org.springframework.boot:spring-boot-starter-mustache')
3. index.mustache 생성
- 첫 페이지를 담당하는 역할
{{>layout/header}}
<h1>스프링부트로 시작하는 웹 서비스</h1>
<div class="col-md-12">
<div class="row">
<div class="col-md-6">
<a href="/posts/save" role="button" class="btn btn-primary">글 등록</a>
</div>
</div>
<br>
<!-- 목록 출력 영역-->
<table class="table table-horizontal table-bordered">
<thead class="thead-strong">
<tr>
<th>게시글 번호</th>
<th>제목</th>
<th>작성자</th>
<th>최종 수정일</th>
</tr>
</thead>
<tbody id="tbody">
{{#posts}} <!-- posts라는 List를 순회하겠다.(=java의 for문) -->
<tr>
<td>{{id}}</td>
<td><a href="/posts/update/{{id}}">{{title}}</a></td>
<td>{{author}}</td>
<td>{{modifiedDate}}</td>
</tr>
{{/posts}}
</tbody>
</table>
</div>
{{>layout/footer}}
반응형
'💻 my code archive > 🏷️JAVA & Spring(Boot)' 카테고리의 다른 글
스프링부트 공부기록(9) - 게시판 프로젝트 :: 머스테치 사용, 게시판 글 조회, 수정, 삭제 구현하기 (0) | 2022.02.27 |
---|---|
스프링부트 공부기록(8) - 게시판 프로젝트 :: 머스테치 사용, 게시판 글 등록 구현하기 (0) | 2022.02.27 |
스프링부트 공부기록(6) - JPA Auditing으로 생성 시간/수정시간 자동화하기 (0) | 2022.02.27 |
스프링부트 공부기록(5) - 게시판 프로젝트 :: Dao 도메인 패키지, 글 등록, 수정, 조회 JPA 어노테이션, 테스트 코드 작성 (0) | 2022.02.27 |
스프링부트 공부기록(4) - JPA로 데이터베이스 다루기 (0) | 2022.02.27 |