본문으로 바로가기

MVVM 패턴, MVC패턴

category SKALAFront-end 9일 전
반응형

Vue의 특징 - MVVM 패턴

  • MVVM 패턴은 Model-View-View Model 패턴
  • Model과 View 사이에 ViewModel 이라는 중간 계층을 두어, View와 Model 간의 결합도를 낮추는 패턴

MVVM 패턴 (Vue.js 기준)

MVVM(Model-View-ViewModel)은 UI 로직과 비즈니스 로직을 분리하는 패턴으로, Vue.js에서는 다음과 같이 적용된다.

MVVM 구성 요소

  1. Model: 데이터를 저장하는 영역 (ex: Vue의 data 혹은 Vuex/Pinia 상태)
  2. ViewModel: Model과 View를 연결하는 중간 계층 (ex: Vue의 computed, methods, watch)
  3. View: 실제 UI (ex: Vue 템플릿, template 부분)

 

MVC 패턴 (Spring 기준)

MVC(Model-View-Controller)는 애플리케이션을 3개의 계층으로 나누어 관리하는 구조이다.

MVC 구성 요소

  1. Model: 비즈니스 로직, 데이터베이스와의 상호작용 (ex: JPA Entity, Service, Repository)
  2. View: 클라이언트에게 보여지는 부분 (ex: Thymeleaf, JSP, JSON 응답)
  3. Controller: 클라이언트 요청을 받아서 처리하고 적절한 Model과 View를 연결 (ex: @RestController 클래스)

 

여기서 잠깐 JSP란?

JSP(JavaServer Pages)는 서버 사이드에서 HTML을 동적으로 생성할 수 있도록 도와주는 기술이다. Java 코드와 HTML을 함께 사용할 수 있으며, Servlet과 함께 Java EE (현재는 Jakarta EE)의 일부로 제공된다.

2. JSP는 지금도 쓰는가?

 거의 안 씀.
과거에는 Java 기반 웹 애플리케이션에서 많이 사용되었지만, 현재는 Spring Boot + Thymeleaf, React/Vue + REST API 같은 방식이 대세가 되어 거의 사용되지 않는다.

3. JSP는 SSR인가?

맞음.
JSP는 서버에서 HTML을 렌더링하여 클라이언트(브라우저)로 보내는 방식이므로 SSR(Server-Side Rendering) 기술이다.

4. JSP를 잘 안 쓰는 이유

🔹 느림: JSP는 컴파일 과정이 필요하고, 변경할 때마다 다시 로딩해야 하는 번거로움이 있다.
🔹 관리 어려움: Java 코드와 HTML이 섞여 있어 유지보수성이 떨어진다.
🔹 템플릿 엔진 발전: Thymeleaf, Mustache 같은 템플릿 엔진이 더 강력하고 사용하기 쉽다
🔹 프론트엔드 발전: Vue, React 같은 프레임워크가 등장하면서 클라이언트에서 렌더링하는 방식이 주류가 된다.

대체 기술은?

JSP 대신 Thymeleaf, Mustache, Freemarker 같은 템플릿 엔진이 사용되거나, 완전히 프론트엔드(Vue, React)와 REST API로 나누는 구조가 대세이다.

반응형