MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴이다.
모델
애플리케이션의 데이터와 비즈니스 로직을 담당한다.
데이터에 접근하고 조작하며 데이터베이스와 연결하여 데이터를처리
뷰
사용자 인터페이스(UI)를 담당하며 사용자가 결과를 볼 수 있도록 렌더링 하는 역할
사용자의 입력을 받아모델에 전달하고 모델에서 변환된 데이터를 기반으로 결과를 보여준다
변경이 일어나면 컨트롤러에 이를 전달해야 한다
컨트롤러
사용자의 입력을 처리하고 모델과 뷰 간의 연결 역할을 한다.
사용자의 요청을 모델에 전달하여 데이터를 처리하고, 뷰를 통해 사용자에게 적절한 응답을 반환한다.
리액트(react.js)는 MVC패턴을 기반으로 동작하며, 유저 인터페이스를 구축하기 위한 강력한 라이브러리이다. DOM조작을 가상화한 가상 DOM을 사용하여 실제 DOM을 조작하는 것을 추상화해서 성능을 높였다.
리액트의 대표적인 특성으로는 불변성(immutable)이 있다.
상태가 변경될 때 새로운 상태 객체가 생성되며, 기존 상태는 수정되지 않는다. 이는 setState와 같은 메서드를 통해 상태가 변경되며, 상태의 불변성을 유지한다.
MVP 패턴은 MVC 패턴으로부터 파생되었으며 컨트롤러가 프레젠터(presenter)로 교체된 패턴이다.
뷰와 프레젠터는 일대일 관계이기 때문에 MVC 패턴보다 더 강한 결합을 지닌 디자인 패턴이다.
MVC패턴에서 컨트롤러가 뷰모델(ViewModel)로바뀐 형태의 소프트웨어 디자인 패턴이다. 뷰와 뷰모델사이의 양방향 데이터 바인딩을 지원하며 UI를 별도의 코드수정 없이 재사용 할 수있고 단위 테스팅하기 쉽다는 장점이 있따.