React는 Virtual DOM을 통해 렌더링한다는 것은 알고 있었지만, 정작 Virtual DOM이 어디에 저장되는지 대한 생각은 한 번도 해보지 않았다.
React에서 Virtual이 어디에 저장되는지 살펴보자!
React는 사용자 인터페이스 구축을 위한 Javascript 라이브러리이며, React의 뛰어난 기능 중 하나는 Virtual DOM이다.
Virtual DOM은 React가 불필요한 re-rendering을 최소화하면서 사용자 인터페이스를 효율적으로 업데이트할 수 있게 해주는 중요한 개념이다.
Virutal DOM은 웹 페이지의 구조화된 표현인 실제 DOM을 메모리 내에서 가볍게 표현한 것이다. 이는 UI를 효율적으로 업데이트하고 성능을 최적화하기 위한 React 전략의 필수적인 부분이다.
Virtual DOM은 HTML DOM의 가상 표현이다. 실제 DOM과 매우 유사한 계층적 트리 구조이지만, 메모리에만 존재한다.
React는 이를 사용하여 구성 요소와 해당 렌더링을 추적한다.
Virtual DOM은 두 가지 주요 목적을 제공한다.
실제 DOM을 조작하는 것은 상대적으로 속도가 느리다. 특히 자주 업데이트하는 경우에는 더욱 느리다. Virtual DOM은 버퍼 역할을 하여 React가 가상 트리를 효율적으로 변경할 수 있도록 해준다. 그 다음 React는 실제 DOM을 업데이트하는 가장 효율적인 방법을 계산한다.
Virtual DOM은 UI의 일관성을 보장하므로 구성 요소 계층 구조가 얼마나 복잡해지는지에 관계없이 주어진 시간에 UI가 어떻게 보여야 하는지 더 쉽게 추론할 수 있다.
React 구성 요소가 렌더링될때 실제 DOM을 직접 업데이트하지 않는다. 대신, UI의 현재 상태를 나타내는 새로운 Virtual DOM 트리를 생성한다. 이 Virtual DOM 트리는 가벼운 javascript 객체이므로 실제 DOM보다 작업 속도가 훨씬 빠르다.
Virtual DOM은 아래와 같은 순서로 생성된다.
Virtual DOM 트리는 실제 DOM 구조와 매우 유사하다. Virtual DOM 트리의 각 요소는 실제 DOM 요소에 해당한다.
<div>
요소를 나타낼 수 있다.class
,id
및 style
과 같은 Virtual DOM 속성은 실제 DOM 속성을 반영한다.Virtual DOM 트리는 본질적으로 트리 구조를 가진 Javascript 객체이므로 React가 이전 Virtual DOM을 쉽게 탐색하고 비교할 수 있다.
React 구성요소의 상태(state)나 props가 변경되면 React는 실제 DOM을 즉시 업데이트하지 않는다. 대신 Virtual DOM을 업데이트하는 과정을 거친다.
Reconciliation은 Virtual DOm 비교에서 발견된 차이점을 기반으로 실제 DOM을 업데이트하는 방법을 결정하는 프로세스이다.
이러한 차이점을 계산하고 실제 DOM에 필요한 것만 업데이트함으로써 React는 UI가 응답성을 유지하고 효율적으로 업데이트되도록 보장한다.
Virtual DOM은 전적으로 메모리에 저장된다. 이는 웹 브라우저나 서버(SSR인 경우)의 메모리 공간에 있는 Javascript 개체이다.
Virtual DOM은 애플리케이션의 눈에 보이는 부분으로 저장되지 않고, React가 비교 및 렌더링 프로세스를 위해 사용하는 내부 데이터 구조이다.
Virtual DOM은 단지 Javascript 객체이기 때문에 React가 계산한 차이를 기반으로 실제 DOM을 업데이트할 때까지 애플리케이션의 HTML이나 CSS에 직접적인 영향을 미치지 않는다.
Virtual DOM과 실제 DOM 사이의 이러한 분리는 React가 성능 최적화를 달성하는 방법의 근본적인 측면이다.
Virtual DOM이 UI의 효율적인 렌더링 및 업데이트를 처리하는 반면, 실제 DOM은 사용자에게 컨텐츠를 표시하는데 중요한 역할을 한다.
React가 Virtual DOM과 이전 Virtual DOM의 차이점을 판단하면 이러한 변경사항을 반영하기 위해 실제 DOM을 업데이트한다. 이 프로세스에는 실제 HTML 요소 수정, 속성 변경, 요소 추가 또는 제거, 텍스트 컨텐츠 업데이트가 포함된다.
실제 DOM은 사용자가 브라우저에서 보고 상호작용하는 것이며 화면에 최종 UI를 렌더링하는 역할을 한다.
< 출처 : https://mobileappcircular.com/where-is-the-virtual-dom-stored-in-react-41724bc09f4f >