Virtual DOM
React.createElement()
์ ํตํด ๋ง๋ ๊ฐ์ฒด(React Element Tree)๊ฐ Virtual DOM์ ๊ทผ๊ฐ์ด ๋๋ ๋ฐ์ดํฐ์ด๋ค.
๊ฐ๋ฐ์๋ค์๊ฒ ์กฐ์ํ๊ธฐ ์ด๋ ค์ด DOM์ ์ง์ ์ ์ผ๋ก ์ ์ดํ์ง ์๊ฒ ํ๊ณ ํจ์ฌ ์ฌ์ด ๊ตฌ์กฐ๋ก UI๋ฅผ ๋ง๋ค๊ณ ๊ฐ๋ฐํ ์ ์๋๋ก React๊ฐ ์ค๊ฐ์์ DOM ์ฒ๋ฆฌ๋ฅผ ๋งก๊ณ ๊ฐ๋ฐ์๋ค์ DOM๊ณผ ๋น์ทํ ์ฆ, HTML ํ๊ทธ์ ๋น์ทํ JSX ๋ฌธ๋ฒ์ ํ์ฉํด ์ปดํฌ๋ํธ ๋ฒ ์ด์ค ๊ฐ๋ฐ ๋ฐฉ์์ ๋ง๋ค์ด ์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก Virtual DOM์ด๋ค.
Virtual DOM์ ๋ฏธ์
๋ฏธ์ โ "Virtual DOM์ ์ฐ๋๊ฑด ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค."
์๋๋ ์ฌ์ฉํ๊ธฐ์ ์ถฉ๋ถํ ๋น ๋ฅธ ์ ๋?
ํต์ฌ์ ์ ์ง๋ณด์๊ฐ ๊ฐ๋ฅํ ๊ฒ โ ์ ์ธํ UI ์์ฑ
Virtual DOM์ ๊ฐ์ฅ ํฐ ์ด์
๋๊ฐ์ ์ฝ๋๋ฒ ์ด์ค์์ ๋ค์ํ ํ๋ซํผ์ ์ด์ํ ์ ์๋ ๊ฒ
1. React Native
React๋ Virtual DOM์ ๋ง๋๋ jsx ๋ฌธ๋ฒ์ ํตํด ์น ๋ธ๋ผ์ฐ์ ๋ DOM, native ํ๋ซํผ ํ๊ฒฝ์์๋ UI Framework ์ฝ๋๋ก ๋ณํํ๋ฉด ๋๋ ๊ฒ์ด๊ธฐ์ ๋ค์ํ ํ๋ซํผ์ ์ด์ํ ์ ์๋ ์ฅ์ ์ด ์๋ค.
2. Next.js
์๋ฒ์์ Virtual DOM์ ๋ฌธ์์ด๋ก ๋ง๋ค์ด ๋ธ๋ผ์ฐ์ ํํ ์ ์กํ๋ฉด ๊ทธ๊ฒ์ด SSR์ด๋ค.
DOM์ด๋?
Document Object Model๋ก ๋ธ๋ผ์ฐ์ ๊ฐ HTML ๋ฌธ์๋ฅผ ๋ ๋๋งํ๋ ๊ณผ์ ์์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ๊ตฌ์กฐ๋ก ํ์ฑํ์ฌ ์ป๋ ํธ๋ฆฌ ๊ตฌ์กฐ์ ๊ฐ์ฒด์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ธ๋ผ์ฐ์ ์์ ์ ๊ณตํ๋ DOM API๋ฅผ ํตํด DOM ๊ฐ์ฒด์ ์ ๊ทผ ๋ฐ ์ ์ด๊ฐ ๊ฐ๋ฅํ๋ค.
Real DOM๊ณผ Virtual DOM์ ์ฐจ์ด
Real DOM์ ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ฉด ํด๋น ๋ ธ๋๋ฅผ ํฌํจํ๋ ๋ชจ๋ ๋ ธ๋๊ฐ ๊ฐฑ์ ๋ ์ ์์ง๋ง Virtual DOM์ ๊ธฐ์กด Virtual DOM๊ณผ ๋ณ๊ฒฝ ๋ Virtual DOM์ ๋น๊ตํ์ฌ ์ค์ ๋ก ๋ฌ๋ผ์ง๋ ๋ถ๋ถ๋ง ๊ฐฑ์ ํ๋ค.
Virtual DOM์ ๋ฌ๋ผ์ง๋ ํด๋น ๋ถ๋ถ๋ง ๋ณ๊ฒฝํ๊ณ ๋ณ๊ฒฝ์ด ํ์ํ ๋ถ๋ถ์ ์ผ๊ด์ ์ผ๋ก ๊ฐฑ์ ํ๊ธฐ ๋๋ฌธ์ ๋ ๋๋ง ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ฒ์ด๋ค.
์ฌ์กฐ์ (Reconciliation)
Virtual DOM์ด React DOM ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํด ์ค์ DOM๊ณผ ๋๊ธฐํ๋๋ ๊ณผ์
DOM์ด ์ ๋ฐ์ดํธ ๋๋ ์ฌํญ์ React๊ฐ ๋ชจ๋ ํ์ ํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ DOM์ ๋น๊ตํ๋ ๊ฒ์ ์ด๋ ต๋ค. ํ์ง๋ง ๊ธฐ์กด์ ๊ฐ์ฒด๋ก๋ Virtual DOM๊ณผ ์ ๋ฐ์ดํธ ๋ Virtual DOM ๊ฐ์ฒด๋ฅผ ๋น๊ตํ๋ ์ผ์ ๋น์ฉ์ด ํจ์ฌ ์ธ๊ณ ์ฝ๋ค. ๋ ๊ฐ์ฒด(Virtual DOM)๋ฅผ ๋น๊ตํด์ ์ค์ง์ ์ผ๋ก ๋ฌ๋ผ์ง๋ ๋ถ๋ถ๋ง DOM์ ๋ฐ์ํ์ฌ ๋๊ธฐํ์ํค๋ ๊ฒ์ด ์ฌ์กฐ์ ์ด๋ค.
์ด๋ฌํ ์ ๊ทผ๋ฐฉ์์ด ์ ์ธ์ API๋ฅผ ๊ฐ๋ฅ์ผ ํ๋ค. -> React์๊ฒ ์ํ๋ UI๋ฅผ ์๋ ค์ฃผ๋ฉด DOM์ด ๊ทธ ์ํ์ ์ผ์นํ๋๋ก ํ๋ค.
React๊ฐ ์ค๊ฐ์ ํํ๋ ๋ณต์กํ ์ธ๋ถ ๋์๋ค(DOM์ ๋น๊ตํ์ฌ ์ ๋ฐ์ดํธ๋ ๋ถ๋ถ๋ง ๊ณจ๋ผ๋ด ์ค์ DOM๊ณผ ๋๊ธฐํํ๋ ๊ณผ์ ์ฆ, ์ฌ์กฐ์ )์ ์ ๊ฒฝ ์ฐ์ง ์๊ณ ์ด๋ค UI๋ฅผ ๋ ๋๋ง ํ ์ง๋ง ๊ด์ฌ์ ๋๋ ์ ์ธ์ ์ธ ์ฌ๊ณ ๋ก ๊ฐ๋ฐ์ด ๊ฐ๋ฅํด์ง๋ค.
Last updated