Virtual DOM

1. Virtual DOM ์ด๋ž€?

  • ๊ฐ€์ƒ์˜ DOM, ์‹ค์ œ DOM์˜ ์‚ฌ๋ณธ ๊ฐ™์€ ๊ฐœ๋…

  • React๋Š” ์‹ค์ œ DOM ๊ฐ์ฒด์— ์ ‘๊ทผํ•ด ์กฐ์ž‘ํ•˜๋Š” ๋Œ€์‹ , ๊ฐ€์ƒ DOM ๊ฐ์ฒด์— ์ ‘๊ทผํ•ด ๋ณ€ํ™” ์ „๊ณผ ํ›„๋ฅผ ๋น„๊ตํ•ด ๋ฐ”๋€ ๋ถ€๋ถ„๋งŒ ์ ์šฉ

  • ์ฆ‰, Javascript ๊ฐ์ฒด๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฐ€์ƒ DOM ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด, ์‹ค์ œ DOM ์กฐ์ž‘์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๊ธฐ์ˆ 

2. Virtual DOM์˜ ํ˜•ํƒœ

  • ์‹ค์ œ DOM๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ€์ƒ DOM ๋˜ํ•œ HTML ๋ฌธ์„œ ๊ฐ์ฒด ๊ธฐ๋ฐ˜

  • ์ถ”์ƒํ™”๋งŒ ๋˜์—ˆ์„ ๋ฟ ํ‰๋ฒ”ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด

  • ๋”ฐ๋ผ์„œ ์‹ค์ œ DOM์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ ๋„ ํ•„์š”ํ•œ ๋งŒํผ ์ž์œ ๋กญ๊ฒŒ ์กฐ์ž‘ ๊ฐ€๋Šฅ

  • ๋ฆฌ์•กํŠธ์—์„œ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋‚˜ ์†์„ฑ์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ ์ƒ์„ฑ

  • ๋ฆฌ์•กํŠธ๋Š” ์ด์ „ ๊ฐ€์ƒ DOM๊ณผ ์ƒˆ๋กœ์šด ๊ฐ€์ƒ DOM์„ ๋น„๊ตํ•˜์—ฌ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ์‹ค์ œ DOM์— ๋ฐ˜์˜

3. Virtual DOM์˜ ๋™์ž‘ ๊ณผ์ •

  • ๋น„๊ต ๊ณผ์ •์—์„œ React๋Š” Diffing ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„์„ ๊ฐ์ง€

  • Diffing ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์ด๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง์ ‘ ํ• ๋‹น์ด ์•„๋‹Œ setState์™€ ๊ฐ™์€ method๋ฅผ ํ™œ์šฉํ•ด ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ

  • ๊ฐ€์ƒ DOM๊ณผ ๋ณ€๊ฒฝ๋œ ์ƒˆ๋กœ์šด ๊ฐ€์ƒ DOM์„ ๋น„๊ตํ•˜์—ฌ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์‹ค์ œ DOM์— ๋ฐ˜์˜ํ•˜์—ฌ ์—…๋ฐ์ดํŠธ โ†’ ์žฌ์กฐ์ • (Reconciliation)

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์ผ๊ด„์ ์œผ๋กœ ํ•œ ๋ฒˆ์— ์—…๋ฐ์ดํŠธ(Batch Update)

  • ์ด๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง์„ ์ตœ์†Œํ™”ํ•จ.

4. Virtual DOM์€ ๋น ๋ฅด๋‹ค?

  • ๊ฐ€์ƒ DOM์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‹ค์ œ DOM์„ ์ง์ ‘ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋น ๋ฅด์ง€๋งŒ, ๋ชจ๋“  ๊ฒฝ์šฐ์— ๊ทธ๋ ‡์ง€๋Š” ์•Š์Œ.

  • ๋•Œ๋กœ๋Š” ์ง์ ‘ DOM์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋น ๋ฅผ ์ˆ˜ ์žˆ์Œ.

Last updated