- 프레임워크들은 주로 MVC, MVVM 아키텍처 사용
👉 MVC : Model - View - Controller
👉 MVVM : Model - View - View - Controller
👉 Model은 데이터를 관리하는 영역
👉 View는 사용자에게 보이는 부분
👉 Controller는 Model 데이터를 조회, 수정하고 변경사항을 View에 반영
- render함수로 컴포넌트가 어떻게 생겼는지 정의
- 뷰가 어떻게 생겼고 어떻게 작동하는지에 대한 정보를 지닌 객체를 반환
- 컴포넌트 내부에 다른 컴포넌트가 들어갈 수 있고 이는 재귀적으로 렌더링
- 최상위 컴포넌트 렌더링이 끝나면 HTML 마크업을 만들고 이를 DOM 요소 안에 주입
- 데이터를 업데이트했을 때 새로운 데이터를 가지고 render함수를 호출
- 이전 render함수가 만들었던 컴포넌트 정보와 현재 render함수가 만든 컴포넌트 정보를 비교
- 자바스크립트로 두 가지 뷰를 최소한의 연산으로 비교한 후 DOM 트리를 업데이트
DOM
- DOM
👉 Document Object Model 의 약어
👉 객체로 문서 구조를 표현 (HTML, XML로 작성)
👉 트리 형태로 특정 노드를 찾거나 수정, 제거, 원하는 곳에 삽입 가능- DOM 에 직접 접근한 변화의 문제점
👉 성능 이슈 발생 (느려짐)
👉 변화가 일어나면 재연산, 리페인팅, 레이아웃 구성으로 시간을 허비
Virtual DOM
- DOM 업데이트를 추상화함으로써 DOM 처리 횟수를 최소화
- 실제 DOM의 가벼운 사본같은 개념
- 절차 순서
👉 데이터를 업데이트하면 Virtual DOM에서 리렌더링
👉 이전 내용과 현재 내용 비교
👉 바뀐 부분만 실제 DOM에 적용- 기타 특징
👉 리액트는 오직 뷰(view)만 담당
👉 프레임워크가 아닌 라이브러리
👉 필요한 기능(라우팅, Ajax, 데이터 모델링 등)은 다른 (third-party)라이브러리(react-router, axios, redux 등)들을 활용