Programing/javascript

DOM 조작 vs Virtual DOM (React 비교 포함) 정리

2025. 4. 29. 09:08
반응형

웹 개발에서 'DOM 조작'과 'Virtual DOM'은 중요한 개념입니다. 특히 현대 프론트엔드 프레임워크(React, Vue 등)의 기반이 되는 핵심 기술로, 이 차이를 이해하면 성능 최적화와 프레임워크 선택에도 큰 도움이 됩니다.

이 글에서는 DOM 조작과 Virtual DOM의 차이, React에서의 Virtual DOM 활용 방식까지 체계적으로 정리합니다.


✅ DOM(Document Object Model) 조작이란?

📌 정의

  • 브라우저가 HTML 문서를 트리 형태로 구조화한 것
  • JavaScript를 통해 이 DOM을 직접 조작할 수 있음

📌 기본 DOM 조작 예시

const title = document.getElementById("title");
title.textContent = "새 제목";
title.style.color = "blue";
  • 요소 선택 후 텍스트 수정, 스타일 변경 등 직접 반영

📌 특징

  • 즉각적이고 직관적
  • 하지만 DOM은 무겁고, 조작 비용이 비쌈
  • 대규모 업데이트가 발생할 경우 성능 저하 발생

✅ Virtual DOM이란?

📌 정의

메모리 내에 존재하는 가벼운 DOM의 가상 버전

  • DOM을 직접 조작하지 않고, 메모리상 가상의 DOM 트리를 구성
  • 변경 사항을 메모리에서 먼저 계산(diffing)한 후 최소한의 실제 DOM 조작만 수행

📌 동작 흐름

  1. UI 상태가 변경됨
  2. 새로운 Virtual DOM 트리 생성
  3. 이전 Virtual DOM과 새로운 Virtual DOM을 비교(diff)
  4. 변경 사항만 실제 DOM에 적용(patch)

📌 Virtual DOM의 장점

  • 불필요한 DOM 접근 최소화
  • 대량의 변경 작업에도 성능 유지
  • 선언형(Declarative) 프로그래밍 스타일 가능

✅ DOM 조작 vs Virtual DOM 직접 비교

항목 DOM 조작 (Vanilla JS) Virtual DOM (React 등)
접근 방식 직접 DOM 변경 메모리에서 변경 계산 후 적용
성능 소규모에는 빠름, 대규모 느림 대규모에서도 안정적
코드 복잡도 Imperative (명령형) Declarative (선언형)
관리 직접 관리 필요 상태(State) 기반 자동 관리
유지보수 어려움 용이함

✅ React에서 Virtual DOM 활용 방식

📌 기본 개념

  • React는 상태(state)가 변경되면 새 Virtual DOM을 생성하고, 이전 Virtual DOM과 비교하여 실제 DOM 업데이트를 최소화함

📌 React 예시

import { useState } from "react";

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <h1>{count}</h1>
      <button onClick={() => setCount(count + 1)}>+1</button>
    </div>
  );
}
  • count가 변경될 때, React는 내부적으로 Virtual DOM을 새로 생성하고, 변경된 부분만 실제 DOM에 적용합니다.

📌 추가 최적화: React의 Reconciliation

  • key 속성 사용: 리스트 렌더링 시 효율적인 diffing 지원
  • memoization: React.memo, useMemo, useCallback 등으로 불필요한 렌더링 방지

✅ 결론

  • DOM 조작은 직접적이지만, 대규모 변경에는 부적합합니다.
  • Virtual DOM은 초기 비용이 약간 있지만, 복잡한 UI 변경에도 최적화된 성능을 제공합니다.
  • React, Vue, Preact 등 현대 프레임워크들은 Virtual DOM 기반으로 대규모 앱을 효율적으로 관리합니다.

작은 프로젝트에서는 직접 DOM 조작도 괜찮지만, 확장성이 필요한 경우 Virtual DOM 기반 접근이 훨씬 유리합니다.

 
반응형

'Programing > javascript' 카테고리의 다른 글

자바스크립트 실무 유틸 함수 시리즈 4 - 문자열 조작  (1) 2025.04.29
자바스크립트 실무 유틸 함수 시리즈 3  (0) 2025.04.29
자바스크립트 실무 유틸 함수 시리즈 2  (0) 2025.04.29
자바스크립트 실무 유틸 함수 시리즈  (0) 2025.04.29
JSON.stringify vs JSON.parse 제대로 이해하기  (0) 2025.04.29
fetch로 REST API 호출하기: 기본 사용법, 응답 처리, 에러 처리까지  (0) 2025.04.29
자바스크립트 Date 객체 소개, 예제, 그리고 심화 활용법  (1) 2025.04.24
moment.js 소개, 사용법, 그리고 심화 이해  (0) 2025.04.24
'Programing/javascript' 카테고리의 다른 글
  • 자바스크립트 실무 유틸 함수 시리즈 2
  • 자바스크립트 실무 유틸 함수 시리즈
  • JSON.stringify vs JSON.parse 제대로 이해하기
  • fetch로 REST API 호출하기: 기본 사용법, 응답 처리, 에러 처리까지
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (478)
      • 금융 (61)
      • Programing (295)
        • Algorithm (39)
        • API (2)
        • javascript (122)
        • CSS (8)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (21)
        • MS-SQL (1)
        • MySQL (13)
        • 보안 (5)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (6)
      • IT 일반 (15)
      • 리뷰 (38)
        • Book (17)
        • 제품 (2)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (36)
        • 회고 (3)
        • 컬럼 (4)
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    Java
    자바스크립트
    iT's MY LiFE
    자바스크립트유틸
    js패턴
    IT 관련
    SQL
    IT블로그
    It
    JavaScript
    디자인패턴
    php
    블로그
    읽고 싶은 책
    기초
    위시리스트
    자바
    IT·컴퓨터
    사고 싶은 책
    jsp
Dongkkase
DOM 조작 vs Virtual DOM (React 비교 포함) 정리
상단으로

티스토리툴바