Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 백준
- Redux
- 스프링
- 파이썬
- Java
- CPU 스케줄링
- error
- OS
- 공부
- 정렬
- 알고리즘
- 기초100제
- 코드업
- react-redux
- 토이프로젝트
- 리덕스장바구니
- Spring
- Operating System
- 자료구조
- 협업
- C++
- react
- codeup
- 타입스크립트
- memory
- 분할메모리할당
- 프로그래머스
- js to ts
- web
- 일상
Archives
- Today
- Total
감자튀김 공장🍟
[React] Virtual DOM 알아보기 본문
반응형
DOM 이란?
- DOM은 Document Object Model의 약어이다. 즉, 객체로 문서 구조를 표현하는 방법으로 XML이나 HTML로 작성한다.
- DOM은 트리 형태라서 특정 노드를 찾거나 수정하거나 제거하거나 원하는 곳에 삽입할 수 있다.
DOM의 문제점
- DOM은 동적UI에 최적화되어 있지 않다.
- HTML은 자체적으로 정적이며 자바스크립트를 사용하여 이를 동적으로 만든다.
- DOM 자체는 빠르다.
- 웹 브라우저 단에서 DOM에 변화가 일어나면 웹 브라우저가 CSS를 다시 연산하고, 레이아웃을 구성하고, 페이지를 리페인트 하는데 이 과정에서 시간이 오래 걸리는 것이다.
- 해결법
- DOM을 조작할 때마다 엔진이 웹 페이지를 새로 그리게 되는데, 계속하여 페이지를 업데이트를 하는 것이 아니라 DOM을 최소한으로 조작하여 작업을 처리하는 방법을 사용한다.
- Virtual DOM을 사용하여 DOM 업데이트를 추상화함으로써 DOM 처리 횟수를 최소화하고 효율적으로 진행한다.
- DOM을 조작할 때마다 엔진이 웹 페이지를 새로 그리게 되는데, 계속하여 페이지를 업데이트를 하는 것이 아니라 DOM을 최소한으로 조작하여 작업을 처리하는 방법을 사용한다.
Virtual DOM
- Virtual DOM을 사용하면 실제 DOM에 접근하여 조작하는 대신, 이를 추상화한 자바스크립트 객체를 구성하여 사용한다.
- Virtual DOM 업데이트 과정
- 데이터를 업데이트하면 전체 UI를 Virtual DOM에 리렌더링 한다.
- 이전 Virtual DOM에 있던 내용과 현재 내용을 비교한다.
- 바뀐 부분만 실제 DOM에 적용한다.
- 오해
- Virtual DOM을 사용한다고 항상 빠른 것은 아니다.
- React나 Vue 등을 사용하지 않더라도 코드 최적화를 열심히 하면 DOM 작업이 느려지는 문제를 개선할 수 있다.
- 또한 작업이 매우 간단할 때에는 오히려 Virtual DOM을 사용하지 않는 편이 더 나은 성능을 보이기도 한다.
- Virtual DOM을 사용한다고 항상 빠른 것은 아니다.
요약
- Virtual DOM은 DOM을 추상화 한 가상의 객체이다.
- 페이지 업데이트가 있을 경우 실제 DOM에 접근하여 조작하는 것이 아니라 Virtaul DOM에 리랜더링하고, 전과 비교하여 바뀐 부분만 실제 DOM에 적용한다.
- Virtual DOM을 사용한다고 무조건 처리 속도가 빨라지는 것은 아니다.
출처
https://jeong-pro.tistory.com/210
http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791160508796
반응형
'Study > React' 카테고리의 다른 글
[React] 리액트에서의 Life Cycle (0) | 2022.04.23 |
---|---|
[React] JSON을 사용해 여러 개의 이미지를 화면에 로드하기 (0) | 2021.06.29 |
[React & Styled-components] web-font 적용 (0) | 2021.06.01 |
[React & recharts] axios 연동해 recharts에 데이터 넣기 (0) | 2021.05.21 |
[Node.js] Cannot read property 'match' of undefined 에러 해결 (0) | 2021.05.16 |
Comments