템플릿 엔진
= 지정된 템플릿 양식과 데이터가 합쳐져 HTML문서를 출력하는 소프트웨어
ex) JSP in Java / View in React
서버사이드 렌더링(SSR) vs 클라이언트 사이드 렌더링(CSR)
1. JSP는 서버 템플릿 엔진으로, 서버에서 구동된다.
-> 서버에서 템플릿 양식에 Java코드로 문자열을 만든다. (서버 사이드 렌더링)
-> 이 문자열을 HTML로 변환하여 브라우저에 전달한다.
-> 브라우저는 문자열을 받아서 화면에 표시할 뿐이다.
2. React의 View는 클라이언트 템플릿 엔진으로, 브라우저 위에서 작동한다.
-> 서버는 JSON 또는 xml 형식으로 데이터만 전달한다.
-> 브라우저는 템플릿 양식에 데이터를 조립하여 HTML을 만든다. (클라이언트 사이드 렌더링)
-> 이를 화면에 표시한다.
3. SPA(Single Page Application)은 클라이언트 사이드 렌더링에 의해 구현된다.
cf) JSP는 엄밀히 서버 템플릿 엔진은 아니다. 하지만 View의 역할만 구성할 때는 템플릿 엔진이다.
(Spring + JSP로 사용될 때)
Java진영에서의 템플릿 엔진
1. JSP
- 과거에 많이 사용됨
- 현재 스프링 진영에서 권장되지 않는다.
2. Thymeleaf
- 현재 스프링 진영에서 권장된다.
- HTML 태그에 속성로 템플릿 기능을 사용하기에 기존 템플릿 엔진과 다르다.
- JS Framework에 익숙한 사람이라면 사용하기 좋다.
3. Mustache
- 간단하다.
- 로직 코드를 사용할 수 없어 View와 Server의 역할을 구분하게 된다.
- Mustache.js / Mustache.java가 다 있어서, 하나의 문법으로 클라이언트 / 서버 템플릿 엔진을 사용할 수 있다.
머스테치(Mustache)
1. Ruby, JS, Python, Java 등 대부분의 언어를 지원하는 심플한 템플릿 엔진
2. Java에서 사용될 땐 서버 템플릿 엔진, JS에서 사용될 땐 클라이언트 템플릿 엔진
3. 제일 큰 장점 = Thymeleaf나 JSP와 달리 커뮤니티 버전에서도 플러그인 사용 가능!
Test는 어떻게?
1. HTML도 결국 규칙이 있는 문자열
2. org.springframework.boot.test.web.client.TestRestTemplate를 통해 URL을 호출했을 때, 해당 mustache file에 포함된 코드들이 있는지 확인하면 된다.
스프링부트에서의 정적파일
1. 스프링부트는 src/main/resources/static 디렉토리에 위치한 js, cs, image 등의 static file들을 URL에서 /로 불러올 수 있다. (절대 경로로 시작해도 가능)
'학습 > Java' 카테고리의 다른 글
[java] Enum의 개념과 사용법 (0) | 2020.02.23 |
---|---|
[java] Mustache 사용하기 (3) | 2020.02.15 |
[java] 테스트를 도와주는 JUnit / assertJ / h2 (0) | 2020.02.09 |
[java] @Entity와 @Builder (0) | 2020.02.05 |
[java] Shy Code를 깨트리는 Lombok의 @Data 어노테이션 (0) | 2020.01.23 |
댓글