mason
mason-log.

mason

mason.

안녕하세요. mason 입니다.

vue

Vue 렌더링.

Virtual DOM, render effect, patch, compiler 최적화 개념

Vue는 render function으로 Virtual DOM 트리를 만들고, 반응형 데이터가 바뀌면 diff(patch) 해 실제 DOM을 최소한으로 갱신합니다.

🔄 업데이트 흐름

Vue 반응형 업데이트 VNode diff 패치

  1. 반응형 데이터 변경
  2. 해당 컴포넌트 render effect 재실행 → 새 VNode 트리
  3. 이전 VNode와 patch (same type/key 비교)
  4. 변경된 DOM 노드만 반영

⚖️ React와 비교

VueReact
트리거Proxy setter → 자동 추적setState/dispatch → 리렌더
컴파일template 정적 분석, block treeJSX, RSC 등
컴포넌트 memodefineOptions({ inheritAttrs }), v-memomemo, useMemo
  • Vue는 어떤 ref가 바뀌었는지 추적해 컴포넌트 단위 effect 실행
  • React는 보통 부모 리렌더 → 자식도 리렌더(memo 없을 때)

⚡ 최적화 도구

  • 서브트리 1회 렌더 후 고정
  • deps 배열 같으면 skip (React memo 유사)
  • 언마운트 대신 캐시 (탭 전환)
  • v-for에서 identity 유지

🔗 참고 자료