누구든지 하는 리액트 (by velopert) 강의와 블로그 글을 보고 정리한 글입니다.
React의 과거의 메뉴얼에 이렇게 적혀있다.
We built React to solve one problem: building large applications with data that changes over time.
우리는 지속해서 데이터가 변화하는 대규모 애플리케이션을 구축하기 위해 React를 만들었습니다
MVC 패턴이란?
데이터단을 담당하는 모델(Model), 사용자의 화면에서 보여지게 되는 뷰(View), 그리고 사용자가 발생시키는 이벤트를 처리해주는 컨트롤러 (Controller) 로 이뤄짐
위의 프레임워크들의 공통점은 모델이다. 프레임워크들의 모델은 대부분 양방향 바인딩을 통하여 모델에 있는 값이 변하면, 뷰에서도 이를 변화시켜준다.
”변화(Mutation)”라는것은 상당히 복잡한 작업이다.
특정 이벤트가 발생 -> 모델에 변화를 일으킴 -> 변화를 일으킴에 따라 어떤 DOM 을 가져옴 -> 어떠한 방식으로 뷰를 업데이트! 이런 로직을 정해줘야 함! (로직은 라이브러리 혹은 프레임워크에서 정해줌)
그냥 Mutation을 하지 말고 데이터가 바뀌면 그냥 View를 날려버리고 새로 만들어버리자!
하지만.. 브라우저는 DOM 기반으로 작동하기 때문에 페이지를 그때 그때 새로 view를 만들어버리라 하면 성능적으로 엄청난 문제가 발생한다.
위의 문제를 해결하기 위해 존재하는 것이 Virtual DOM이다.
Virtual DOM은 가상의 DOM으로 변화가 일어나면 브라우저의 DOM에 새로운 걸 넣는 것이 아니라, Javascript로 이루어진 가상 DOM에 한번 렌더링 -> 기존의 DOM과 비교 -> 정말 변화가 필요한 곳에만 업데이트 를 한다.