why not

React 가상돔 본문

CodeStates/블로깅 챌린지

React 가상돔

novem 2023. 2. 21. 19:00

리액트의 주요 특징 -> 가상돔 사용

 

1. 브라우저가 렌더링하는 과정

1-1) 웹 페이지 빌드 과정(Critical Rendering Path CRP)

- 서버에서 HTML문서를 브라우저로 전달 후 브라우저가 문서에 따라 화면을 보여주기 위해 HTML은 DOM으로 DOM Tree를 구성 한후,  DOM과 CSSOM을 합쳐서 Render Tree를 만들고 Layout 단계와 Paint 단계를 거쳐서 화면에 보여주게 된다.

즉, 웹 브라우저가 HTML 문서를 읽고, 스타일을 입히고 뷰포트에 표시하는 과정을 말한다.

1-2) DOM Tree 생성 과정

- 렌더 엔진이 문서를 읽어들여서 그것들을 파싱하고 어떤 내용을 페이지에 렌더링할지 결정한다.

 

1-3) Render tree 생성 과정

- 브라우저가 DOM과 CSSOM을 결합하는 곳이며, 이 프로세스는 화면에 보이는 모든 콘텐츠와 스타일 정보를 모두 포함하는 최종 렌더링 트리를 출력한다. 즉 화면에 표시되는 모든 노드의 콘텐츠 및 스타일 정보를 포함한다.

 

1-4) Layout(reflow)

- 브라우저가 페이지에 표시되는 각 요소의 크기와 위치를 계산하는 단계

 

1-5) Paint

- 실제 화면에 그리기

 

1-6) 문제점

- 어떤 인터렉션에 의해 DOM에 변화가 발생하면 그 때 마다 Render Tree가 재생성 됩니다. 즉 모든 요소들의 스타일을 계산, Layout, Repaint 과정까지 다시 거치게 되기에 인터렉션이 많으면 DOM을 많이 조작하여 조작하는 비용이 너무 크게 된다.

 

1-7) 가상 돔(Virtual Dom)

- 위의 문제점을 해결하기 위해 나온 것으로 가상 돔이란 실제 DOM을 메모리에 복사해준 것으로 생각하면 된다.

1-7.1) 가상돔의 작동 원리?

- 데이터가 바뀌면 가상돔에 렌더링되고 이전에 생긴 가상돔과 비교해서 바뀐 부분만 실제 돔에 적용을 시켜준다.

1-7.2) Diffing

- 바뀐 부분을 찾는 과정

1-7.2) 재조정(reconciliation) 

- 바뀐 부분만 실제 돔에 적용시켜주는 것

'CodeStates > 블로깅 챌린지' 카테고리의 다른 글

Create React App을 이용해서 리액트 설치하기  (0) 2023.02.23
[React] Custom Component  (0) 2023.02.22
React 오리엔테이션  (0) 2023.02.20
UI/UX  (0) 2023.02.17
웹앱 기초  (0) 2023.02.16