Angular의 등장으로 웹 애플리케이션은 기존의 데스크톱 애플리케이션이 처리하던 많은 기능을 담기 시작했다. 그러면서 웹 화면은 점점 더 복잡도가 증가하게 되었고, HTMl DOM의 특성상 복잡도가 증가할수록 웹은 점점 무겁고 느려지게 되었다.
HTML DOM은 트리구조로 되어 있어서 복잡도가 많은 웹일수록 끊임없이 연결된 트리구조를 갖게 되고, 변경이 일어날 때마다 트리를 매번 갱신해야한다. 이 작업은 매우 큰 성능 저하를 가져오게 된다.
장점 : 양반향 데이터 바인딩(Two-way data binding)
단점 : 속도(성능) 문제
※ 양방향 데이터 바인딩 : 모델(Model)에서 데이터를 정의한 후 뷰(View)와 연결하면 모델과 뷰 어느 한쪽에 변경이 일어났을 때 다른 한쪽에 자동으로 반영되는 것을 의미
이러한 단점을 극복하고 빠르고 고성능을 가진 웹 애플리케이션을 위해 나온 것이 React이다.
React는 이러한 DOM의 문제를 개선하기 위해 Virtual DOM(가상돔) 개념을 제공한다. Virtual DOM은 가상의 DOM을 만들어서 화면에 변화가 생기면 새로운 가상 DOM을 생성한 후 기존의 DOM과 비교하여 변경이 일어난 부분만 동기화한다. 이 과정을 재조정 또는 조화과정이라고 한다.
이를 통해 기존 DOM이 가지고 있던 단점을 개선하고 웹에서도 고성능 애플리케이션을 구현할 수 있도록 하였다.
특징 : 단방향 데이터 바인딩
Vue는 Angular의 데이터 바인딩 장점과 React의 Virtual DOM 장점을 모두 수용하고 있는 프레임워크이다.
MVVM 패턴
컴포넌트