Front-end

React Virtual Dom ๊ณผ Vue Virtual Dom ๋น„๊ต

ciocio 2024. 11. 7. 17:00

๐Ÿ“  React Virtual Dom ์ด๋ž‘ Vue Virtual Dom ์ฐจ์ด๊ฐ€ ๋ญ์—์š” ?

 

๊ฐ™์ด ๊ณต๋ถ€ํ•˜๋Š” ์นœ๊ตฌ์˜ ์งˆ๋ฌธ์— ๋ง๋ฌธ์ด ๋ง‰ํ˜”๋‹ค.

๊ฐ€์ƒ๋”์ด ์šด์˜๋˜๋Š” ๋ฐฉ์‹์ด ๊ฑฐ๊ธฐ์„œ ๊ฑฐ๊ธฐ ์•„๋‹๊นŒ..?

๋ผ๋Š” ์• ๋งค๋ชจํ˜ธํ•œ ๋‹ต๋ณ€์„ ํ•˜๊ธฐ ์‹ซ์–ด์„œ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

๐Ÿ“  Vue / Compiler-Informed Virtual Dom

 

๋‚˜๋Š” ๋ง‰์—ฐํ•˜๊ฒŒ,

์ดˆ๊ธฐ ๋ Œ๋”๋ง ๊ณผ์ •์ด Vue ๊ฐ€ React ๋ณด๋‹ค ๋” ๋น ๋ฅด๋‹ค๊ณ ๋Š” ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค.

 

์™œ ? ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์œผ๋กœ,

Vue ๋Š” <template> ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ 

React ๋Š” .jsx ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋‹ˆ๊นŒ

๋ณ€ํ™˜๋˜๋Š” ๊ณผ์ •์ด Vue ๊ฐ€ ์ƒ์‹์ ์œผ๋กœ ๋” ๋น ๋ฅด์ง€ ์•Š์„๊นŒ ? ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 

Vue ์˜ ๋ Œ๋”๋ง ๋ฉ”์ปค๋‹ˆ์ฆ˜

 

๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด  ์ž˜ ๋‚˜์™€์žˆ์ง€๋งŒ ๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๋Œ€๋กœ ์„ค๋ช…ํ•ด๋ณด๊ฒ ๋‹ค.

Vue ์ปดํฌ๋„ŒํŠธ๊ฐ€ mount ๋  ๋•Œ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์ด ๋ฐœ์ƒํ•œ๋‹ค.

1๏ธโƒฃ ์ปดํŒŒ์ผ

๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ•์ด ์ปดํŒŒ์ผ ๊ณผ์ •์„ ๊ฑฐ์ณ ๋ Œ๋” ํ•จ์ˆ˜(์ฝ”๋“œ)๊ฐ€ ๋œ๋‹ค.

๋ Œ๋” ํ•จ์ˆ˜๋Š” ๊ฐ€์ƒ DOM ํŠธ๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋‹ค.

๋นŒ๋“œ ๊ณผ์ •์„ ํ†ตํ•ด ๋ฏธ๋ฆฌ ์‹คํ–‰๋˜๊ฑฐ๋‚˜,

๋Ÿฐํƒ€์ž„ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ด ์ฆ‰์„์—์„œ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

โ€ป ์ฃผ์˜

์ปดํŒŒ์ผ ๊ณผ์ • ์—†์ด ๋ Œ๋” ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋ Œ๋” ํ•จ์ˆ˜ & JSX

(๋‚˜๋Š” ์—ฌ๊ธฐ์„œ React ์˜ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ •์  ๋ถ„์„์—†์ด ๋ณ€๊ฒฝ์ ์— ๋”ฐ๋ผ

๊ด€๋ จ ์ปดํฌ๋„ŒํŠธ์˜ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ์žฌ๋ Œ๋”๋ง๋˜๊ฒ ๊ตฌ๋‚˜ ๋ผ๋Š” ๊ฑธ ์–ด๋ ดํ’‹์ด ์ง์ž‘ํ–ˆ๋‹ค.)

JavaScript ๋กœ ๋งค์šฐ ๋™์ ์ธ ๋กœ์ง์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์šฉํ•˜์ง€๋งŒ
Vue ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ•์„ ๊ถŒ์žฅํ•œ๋‹ค.

๐Ÿ“  Vue ๋Š” ์™œ ํ…œํ”Œ๋ฆฟ์„ ๊ถŒ์žฅํ• ๊นŒ ?

1. ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ•์€ ์‹ค์ œ HTML ์— ๋” ๊ฐ€๊น๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์›น ์ ‘๊ทผ์„ฑ๋ฉด์—์„œ๋„ ์šฐ์ˆ˜ํ•˜๊ณ  ๋””์ž์ด๋„ˆ๊ฐ€ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
์˜ˆ์ „๋ถ€ํ„ฐ ๊ฐ•์กฐํ•ด์™”์ง€๋งŒ ํผ๋ธ”๋ฆฌ์…”์™€์˜ ํ˜‘์—…์— ์•„์ฃผ ์šฐ์ˆ˜ํ•˜๋‹ค.

2. ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ•์€ ์ •์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ธฐ ๋” ์‰ฝ๋‹ค.
ํ…œํ”Œ๋ฆฟ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ์ตœ์ ํ™”๋ฅผ ์ด๋ค„๋‚ด๊ธฐ ์‰ฝ๋‹ค.
๊ฐ€์ƒ DOM ์„ฑ๋Šฅ ํ–ฅ์ƒ์€ ๋ค.

 

 

2๏ธโƒฃ ๋งˆ์šดํŠธ

๋Ÿฐํƒ€์ž„ ๋ Œ๋”๋Ÿฌ๋Š” ๋ Œ๋” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ๋ฐ˜ํ™˜๋œ ๊ฐ€์ƒ DOM ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค.

์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹ค์ œ DOM ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

 

3๏ธโƒฃ ํŒจ์น˜

๋งˆ์šดํŠธ ์ค‘์— ์‚ฌ์šฉ๋œ ์˜์กด์„ฑ์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์ดํŽ™ํŠธ๊ฐ€ ๋‹ค์‹œ ์‹คํ–‰๋œ๋‹ค.

๋Ÿฐํƒ€์ž„ ๋ Œ๋”๋Ÿฌ๋Š” ์˜์กด์„ฑ(์ข…์†์„ฑ)์„ ์ถ”์ ํ•˜์—ฌ
์—…๋ฐ์ดํŠธ ๋œ ์ƒˆ๋กœ์šด ๊ฐ€์ƒ DOM ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์ด์ „ ํŠธ๋ฆฌ์™€ ์ƒˆ ํŠธ๋ฆฌ ๊ฐ„ ์ฐจ์ด๋ฅผ ๋น„๊ตํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๋ฅผ ์‹ค์ œ DOM ์— ์ ์šฉํ•œ๋‹ค.

 


 

์ฆ‰, React ์™€ ์ปดํฌ๋„ŒํŠธ mount ์‹œ ํฐ ์ฐจ์ด์ ์€

์ปดํŒŒ์ผ ๊ณผ์ •์„ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •์ ์œผ๋กœ ๋ถ„์„ํ•˜๋Š” ๋‹จ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.

 

React ์™€ ๋Œ€๋ถ€๋ถ„์˜ ๋‹ค๋ฅธ ๊ฐ€์ƒ DOM ๊ตฌํ˜„์€ ์ˆœ์ „ํžˆ ๋Ÿฐํƒ€์ž„์ด๋‹ค.

Reconciliation(์กฐ์ •) ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ํ• ๋‹น๋˜๋Š” ๊ฐ€์ƒ DOM tree ์— ๋Œ€ํ•œ

์ •ํ™•์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋ฆฌ๋ฅผ ์™„์ „ํžˆ ํƒ์ƒ‰ํ•˜๊ณ  ๋ชจ๋“  ๊ฐ€์ƒ ๋…ธ๋“œ์˜ props ๋ฅผ ๋น„๊ตํ•ด์•ผ ํ•œ๋‹ค.

์–ด๋–ค ๋ถ€๋ถ„์ด ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€, ์กฐ์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์•Œ ํ„ฑ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค๋งŒ ์•Œ ๋ฟ์ด๋‹ค.

 

๋•Œ๋ฌธ์— ํŠธ๋ฆฌ์˜ ์ผ๋ถ€๋Š” ์•„์˜ˆ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๋Š”๋ฐ๋„

๋‹ค์‹œ ๋ Œ๋”๋ง ํ• ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๊ฐ€์ƒ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ์ƒ๊ธด๋‹ค.

 

Vue ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๋Ÿฐํƒ€์ž„ ๋ชจ๋‘ ์ œ์–ดํ•œ๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํ…œํ”Œ๋ฆฟ์„ ์ •์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ณ ,

์ƒ์„ฑ๋œ ์ฝ”๋“œ(๋ Œ๋” ํ•จ์ˆ˜)์— ํžŒํŠธ๋ฅผ ๋‚จ๊ฒจ ๋Ÿฐํƒ€์ž„์ด ๊ฐ€๋Šฅํ•  ๋•Œ

์ˆ˜์ •์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์žฌ๋žœ๋”๋ง๋˜๊ฒŒ๋” "๋ฐ”๋กœ ๊ฐ€๊ธฐ"๋ฅผ ์ง€์›ํ•œ๋‹ค.

(์†”์งํžˆ ์—ฌ๊ธฐ์„œ ๋†€๋ž๋‹ค. Vue ๊ฐ€ ๋” ๊ฐ€๋ณ๊ณ  ๋น ๋ฅธ ์ฃผ์š”ํ•œ ์ด์œ ..)

 


 

Vue ํ…œํ”Œ๋ฆฟ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ตœ์ ํ™” ๋ฐฉ๋ฒ•

 

1. ์ •์  ํ˜ธ์ด์ŠคํŒ…

 

<div>
  <div>foo</div> <!-- ํ˜ธ์ด์ŠคํŠธ ๋จ -->
  <div>bar</div> <!-- ํ˜ธ์ด์ŠคํŠธ ๋จ -->
  <div>{{ dynamic }}</div>
</div>

 

ํ…œํ”Œ๋ฆฟ์—๋Š” ๋™์  ๋ฐ”์ธ๋”ฉ์ด ํฌํ•จ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์ด ๊ฝค ๋งŽ๋‹ค.

foo ์™€ bar ์ฒ˜๋Ÿผ ์ •์ ์ธ ์—˜๋ฆฌ๋จผํŠธ๋Š” ๊ฐ€์ƒ ๋…ธ๋“œ(vnode) ๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•˜๊ณ  ๋น„๊ตํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

Vue ์ปดํŒŒ์ผ๋Ÿฌ๋Š” vnode ์ƒ์„ฑ ํ•จ์ˆ˜(๋ Œ๋” ํ•จ์ˆ˜) ํ˜ธ์ถœ ์‹œ

์ž๋™์œผ๋กœ ํ˜ธ์ด์ŠคํŠธ(hoist)ํ•˜์—ฌ ๋ชจ๋“  ๋ Œ๋”์—์„œ ๋™์ผํ•œ vnode ๋ฅผ ์žฌ์‚ฌ์šฉํ•œ๋‹ค.

๋ Œ๋”๋Ÿฌ๋Š” ์ด์ „ vnode ์™€ ์ƒˆ vnode ๊ฐ€ ๋™์ผํ•˜๋ฉด ๋น„๊ต ๊ฑด๋„ˆ๋›ฐ๊ธฐ ๋•Œ๋ฌธ์— ์•„์ฃผ ๊ตฟ

 

๋˜ํ•œ ์ •์  ์—˜๋ฆฌ๋ฉ˜ํŠธ๊ฐ€ ์ถฉ๋ถ„ํžˆ ์—ฐ์†์ ์œผ๋กœ ์กด์žฌํ•˜๋ฉด

ํ•ด๋‹น ๋…ธ๋“œ๋“ค์— ๋Œ€ํ•ด ๋‹จ์ผ ์ •์  vnode ๋กœ ์••์ถ•์‹œ์ผœ๋ฒ„๋ฆฐ๋‹ค๊ณ  ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ์ •์  vnode ๋Š” innerHTML ๋กœ ๋งˆ์šดํŠธ ๋œ๋‹ค.

ํ•ด๋‹น DOM ๋Š” ์ดˆ๊ธฐ ๋งˆ์šดํŠธ ์‹œ ์บ์‹ฑ๋˜์–ด

๋‹ค๋ฅธ ๊ณณ์—์„œ ์žฌ์‚ฌ์šฉ๋  ๋•Œ cloneNode() ์‚ฌ์šฉํ•ด์„œ ์ƒˆ DOM ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. (ํšจ์œจ ๊ตฟ)

 

 

2. ํŒจ์น˜ ํ”Œ๋ž˜๊ทธ

 

<!-- class๋งŒ ๋ฐ”์ธ๋”ฉ -->
<div :class="{ active }"></div>

<!-- id์™€ value๋งŒ ๋ฐ”์ธ๋”ฉ -->
<input :id="id" :value="value">

<!-- text๋งŒ only -->
<div>{{ dynamic }}</div>

 

Vue ๋Š” vnode ์ƒ์„ฑ ํ˜ธ์ถœ์—์„œ ๊ฐ ์—˜๋ฆฌ๋จผํŠธ์— ํ•„์š”ํ•œ ์—…๋ฐ์ดํŠธ ์œ ํ˜•๋งŒ ์ธ์ฝ”๋”ฉํ•œ๋‹ค.

๋˜ํ•œ ํ•˜๋‚˜์˜ ์—˜๋ฆฌ๋จผํŠธ๋Š” ์—ฌ๋Ÿฌ ํŒจ์น˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“  ํŒจ์น˜ ํ”Œ๋ž˜๊ทธ ์ข…๋ฅ˜

- TEXT (1) : ํ…์ŠคํŠธ(์ฝ˜ํ…์ธ ) ๋ณ€๊ฒฝ ํ”Œ๋ž˜๊ทธ
- CLASS (2) : ๋…ธ๋“œ class ๋ณ€๊ฒฝ ํ”Œ๋ž˜๊ทธ
- STYLE (4) : style ๋ณ€๊ฒฝ ํ”Œ๋ž˜๊ทธ (์ธ๋ผ์ธ ์Šคํƒ€์ผ๋งŒ ๊ฐฑ์‹  ๊ฐ€๋Šฅ)
- PROPS (8) : props ๋ณ€๊ฒฝ ํ”Œ๋ž˜๊ทธ
- FULL_PROPS (16) : props ์ผ๊ด„ ๋ณ€๊ฒฝ ํ”Œ๋ž˜๊ทธ
- HYDRATE_EVENTS (32) : ์ด๋ฒคํŠธ ํ•„์ˆ˜ ์ ์šฉ ํ”Œ๋ž˜๊ทธ (feat. SSR)
- STABLE_FRAGMENT (64) : ๋‚ด๋ถ€ ๋…ธ๋“œ ์ˆœ์„œ ๊ณ ์ • ํ”Œ๋ž˜๊ทธ
- KEYED_FRAGMENT (128) : ๋‚ด๋ถ€ ๋…ธ๋“œ ์ˆœ์„œ ๊ณ ์ • ํ”Œ๋ž˜๊ทธ (ํ‚ค ์žˆ์Œ)
- UNKEYED_FRAGMENT (256) : ๋‚ด๋ถ€ ๋…ธ๋“œ ์ˆœ์„œ ๋ฏธ๊ณ ์ • ํ”Œ๋ž˜๊ทธ (ํ‚ค ์—†์Œ)
- NEED_PATCH (512) : ์žฌํŒจ์น˜๊ฐ€ ํ•„์š”ํ•จ์„ ์•Œ๋ฆฌ๋Š” ํ”Œ๋ž˜๊ทธ
- DYNAMIC_SLOTS (1024) : ์Šฌ๋กฏ ํŒจ์น˜ (๋™์ ์œผ๋กœ ๊ต์ฒด๋˜๋‹ˆ๊นŒ)

 

ํŒจ์น˜ ํ”Œ๋ž˜๊ทธ๋Š” ์˜์กด์„ฑ ์ˆ˜์ •์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ

ํ•ด๋‹น DOM ์˜ ์—…๋ฐ์ดํŠธ ์œ ๋ฌด๋ฅผ ๊ฒฐ์ •ํ•  ๋•Œ ๋„์›€์„ ์ค€๋‹ค.

 

 

3. ํŠธ๋ฆฌ ๋ณ‘ํ•ฉ

 

๊ฐœ๋…์ ์œผ๋กœ "๋ธ”๋ก(block)" ์ด๋ž€ ๋‚ด๋ถ€ ๊ตฌ์กฐ๊ฐ€ ์•ˆ์ •์ ์ธ ํ…œํ”Œ๋ฆฟ์„ ๋งํ•œ๋‹ค.

์ฆ‰, ์ „์ฒด ํ…œํ”Œ๋ฆฟ์— v-if ๋ฐ v-for ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ์  ๋””๋ ‰ํ‹ฐ๋ธŒ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ํ˜•ํƒœ๋ฅผ ๋งํ•œ๋‹ค.

 

<div> <!-- ๋ฃจํŠธ ๋ธ”๋ก -->
  <div>...</div>         <!-- ์ถ”์ ํ•˜์ง€ ์•Š์Œ -->
  <div :id="id"></div>   <!-- ์ถ”์ ํ•จ -->
  <div>                  <!-- ์ถ”์ ํ•˜์ง€ ์•Š์Œ -->
    <div>{{ bar }}</div> <!-- ์ถ”์ ํ•จ -->
  </div>
</div>

 

์ •์ ์ธ ์—˜๋ฆฌ๋จผํŠธ๋Š” ์ œ์™ธํ•˜๊ณ  ๋™์ ์ธ ํ•˜์œ„ ๋…ธ๋“œ๋งŒ ํฌํ•จ๋œ ๋ณ‘ํ•ฉ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.

์ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•ด์•ผ ํ•  ๋•Œ ์ „์ฒด ํŠธ๋ฆฌ ๋Œ€์‹ , ๋ณ‘ํ•ฉ๋œ ํŠธ๋ฆฌ๋งŒ ํƒ์ƒ‰ํ•˜๋ฉด ๋œ๋‹ค. wow

๊ฐ€์ƒ DOM reconciliation ์ค‘์— ํ†ต๊ณผํ•ด์•ผํ•˜๋Š” ๋…ธ๋“œ ์ˆ˜๋ฅผ ํฌ๊ฒŒ ์ค„์ธ๋‹ค.

 

<div> <!-- ๋ฃจํŠธ ๋ธ”๋ก -->
  <div>
    <div v-if> <!-- if ๋ธ”๋ก -->
      ...
    <div>
  </div>
</div>

 

v-if ๋ฐ v-for ๋””๋ ‰ํ‹ฐ๋ธŒ๋Š” ์ƒˆ ๋ธ”๋ก ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์ž์‹ ๋ธ”๋ก์€ ๋ถ€๋ชจ ๋ธ”๋ก์˜ ๋™์  ์ž์† ๋ฐฐ์—ด ๋‚ด์—์„œ ์ถ”์ ๋œ๋‹ค.

 

 

๐Ÿ“  React / Virtual Dom

 

๊ฐ€์ƒ DOM ์ด๋ž€ ?

 

๋ฉ”๋ชจ๋ฆฌ์— ๋ณด๊ด€๋œ UI ์˜ ๊ฐ€์ƒ ๊ตฌํ˜„์ฒด๊ฐ€

React DOM ๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜ํ•ด ์‹ค์ œ DOM ๊ณผ ๋™๊ธฐํ™”๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋…

In React world, the term “virtual DOM” is usually associated with "React elements" since they are the objects representing the user interface. React, however, also uses internal objects called “fibers” to hold additional information about the component tree. They may also be considered a part of “virtual DOM” implementation in React.

 

 

React Fiber ์ด๋ž€ ?

 

Fiber ๋Š” React 16์˜ ์ƒˆ๋กœ์šด Reconciliation ์—”์ง„์ด๋‹ค.

๊ฐ€์ƒ DOM ์˜ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋„์ž…๋˜์—ˆ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•