DOM ์ด๋?
DOM์ Documnet Object Model์ ์ค์๋ง๋ก, ์น ํ์ด์ง๋ฅผ ์ด๋ฃจ๋ ํ๊ทธ๋ค์ JS๊ฐ ์ด์ฉํ ์ ์๋๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ง๋ ๊ฐ์ฒด ๋ชจ๋ธ์ ๋งํ๋ค. ๊ทธ๋๋ก ํ์ด์ ํด์ํ๋ฉด ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ์ธ๋ฐ, html, head, body์ ๊ฐ์ ํ๊ทธ๋ค์ JS๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ณด๊ดํ๊ณ ์ด์ฉํ ์ ์๋ ๊ฐ์ฒด์ธ ๊ฒ์ด๋ค.
๊ฐ๋จํ ๋งํด์ DOM์ HTML์ ์คํฌ๋ฆฝํธ ์ธ์ด๋ฅผ ์๋ก ์ด์ด์ฃผ๋ ์ญํ ์ ํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
JS๋ HTML ํ๊ทธ๋ค์๊ฒ Document๋ผ๋ ์ ์ญ ๊ฐ์ฒด๋ฅผ ํตํ์ฌ ์ ๊ทผํด ์กฐ์ข
ํ๋ค. window๋ผ๋ ๊ฐ์ฒด๋ Document๋ผ๋ ์ ์ญ ๊ฐ์ฒด ์์์ ์์นํด ์๋ค.
๋ณดํต ๋ณธ์ธ์ HTML ์ด๋ React ์์
์ ์์ํ๊ธฐ ์ , ํ์ด์ง์ DOM ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ ค ๋ณธ ํ์ ์์ํ๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ์ข ๋ ์ฒด๊ณ์ ์ด๊ณ ๊น๋ํ ์์
์ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
Virtual DOM์ด๋?
๊ฐ๋จํ ๋งํ์๋ฉด, ์ค์ DOM์ ๊ฐ๋ฒผ์ด ์ฌ๋ณธ๊ณผ ๊ฐ์ ๊ฐ๋
์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
Virtual DOM์ ์ฌ์ฉํ๋ฉด, ํ๋ฉด์ ๋ณํ๊ฐ ์์ ๋๋ง๋ค ์ค์๊ฐ์ผ๋ก DOM ํธ๋ฆฌ๋ฅผ ์์ ํ์ง ์๊ณ , ๋ณ๊ฒฝ์ฌํญ์ด ๋ชจ๋ ๋ฐ์๋ Virtual DOM์ ์์ฑํ์ฌ ํ ๋ฒ๋ง DOM ์์ ์ ํ๊ฒ ๋๋ค. ์ด๋ ๊ฒ ๋๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ๋ ๋ ๋๋ง์ ํ ๋ฒ๋ง ํ๋ฉด ๋๋ฉฐ, ๋ถํ์ํ ๋ ๋๋ง ํ์๋ฅผ ์ค์ผ ์ ์๊ฒ ๋๋ค.
๋ณดํต React์์ ์ฌ์ฉํ๋๋ฐ, React์์ Virtual DOM์ ๋ฐ์ํ๋ ์ ์ฐจ๋ ์๋์ ๊ฐ๋ค.
- ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ -> ์ ์ฒด UI๋ฅผ Virtual DOM์ ๋ฆฌ๋ ๋๋ง
- ์ด์ ์ Virtual DOM์ ๋ด์ฉ๊ณผ ํ์ฌ์ ๋ด์ฉ๋ผ๋ฆฌ ๋น๊ต
- ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ์ค์ DOM์ ๋ ๋๋ง
์ฌ์ค, Virtual DOM์ ํตํด ์ฒ๋ฆฌํ๋ ๊ฒ์ ์ค์ DOM์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๋ ๋น ๋ฅธ ํธ์ ์๋๋ค. ๊ฐ๋ฐ์๊ฐ ์์ ์ ๋ณด๋ค ์ฝ๊ฒ ํ ์ ์๋๋ก ๋์์ ์ฃผ๋ ๊ฒ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๊ฒ ๋ค.
Virtual DOM์ ๋ฑ์ฅ ์ด์
์ด๋ฏธ ๊ธฐ์กด์ DOM์ด ์๋๋ฐ ์ Virtual DOM์ด๋ผ๋ ๊ฒ์ด ์๊ฒจ๋๊ฒ ๋ ๊ฒ์ผ๊น?
๋ฐ์ดํฐ๋ฅผ ํํํ๋ ์์๋ค์ด ๋ง์์ง ์๋ก, ๊ธฐ์กด์ DOM ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ ๋๋ง์ด ์ผ์ด๋๋ ๊ณผ์ ์ ์์๋๋ ์๊ฐ์ด ๊ธธ์ด์ง๋ค. ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค์ document ๊ฐ์ฒด๋ค์ ํ๊ณ , CSS๋ฅผ ์ฐ์ฐํ๊ณ , ๋ ์ด์์์ ๊ตฌ์ฑํ๊ณ ํ๋ ๋ฑ์ ๊ณผ์ ๋ค์ด ๋ค์ ์ผ์ด๋์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ฌํ ์ํฉ์ผ๋ก ์๋์ ์ธ ๋ถ๋ถ๊ณผ ๊ณผ์ ์์ ์๊ธฐ๋ ๋ฒ๊ทธ, ๋ธ๋ผ์ฐ์ ๊ฐ ์ฃฝ๋ ๋ฑ์ ์ผ๋ค์ ๊ฐ์ ํ๊ธฐ ์ํด์ Virtual DOM์ด ๋ํ๋ ๊ฒ์ด๋ค.
- DOM์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- 10๊ฐ์ ๋ ธ๋๋ฅผ ํ๋์ฉ ์์
- 10๋ฒ์ ๋ ๋๋ง ๋ฐ์
- Virtual DOM์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- 10๊ฐ์ ๋ ธ๋๋ฅผ ํ๋์ฉ ์์
- Virtual DOM๋ผ๋ฆฌ ๋น๊ตํ๋ฉฐ ๋ณ๊ฒฝ ์ฌํญ์ Virtual DOM์ 10๋ฒ ๋ฆฌ๋ ๋๋ง
- ์ค์ DOM์ ๋ ๋๋ง
์ฌ๊ธฐ์ ๋ ๋๋ง์ด๋? DOM ํธ๋ฆฌ๋ฅผ ์์ฑํ ํ, ๋ ๋ ํธ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ํ๋ฉด์ ํ์ํ๋ ๊ณผ์ ์ ๋งํ๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ฆฌ๋ ๋๋ง์? ๋ฐ์ดํฐ๊ฐ ์ ๋ฐ์ดํธ๋๋ฉด ์ด์ ์ ์์ฑํ ์ ๋ณด์ ๋ณ๊ฒฝ๋ ์ ๋ณด๋ฅผ ๋น๊ตํ์ฌ ์ต์ํ์ ์ฐ์ฐ์ผ๋ก DOM ํธ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํ์ฌ ๋ฐ๋ ์์๋ง DOM์ ๋ฐ์ํ๋ ๊ณผ์ ์ ๋งํ๋ค.
React์ ๊ฒฝ์ฐ, ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํ์ฌ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ์๋ก์ด ์ปดํฌ๋ํธ๋ก ์์ ํด ์ฃผ๋ ๊ฒ์ด ๋ฆฌ๋ ๋๋ง ๊ณผ์ ์ด๋ผ๊ณ ํ ์ ์๋ค. ์ผ๋ฐ DOM์ ์ฌ์ฉํ๋ ๋ ๋๋ง ๊ณผ์ ์ ๋นํ์ฌ DOM ํธ๋ฆฌ์ ๋ ๋ ํธ๋ฆฌ๋ฅผ ์์ฑํ์ง ์์๋ ๋๋ ๊ฒ์ด๋ค.
ํ์คํ ์ง์ DOM์ ์ ์ดํ๋ ๊ฒ๋ณด๋ค ๋๋ฆด ์ ์์ง๋ง, SPA์ ๊ฐ์ ๋น๋๊ธฐ์ ์๋น์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
Virtual DOM์ ์ฌ์ฉํ ๋, ์ต์ ํ ์์ ๊ณผ ๊ฐ์ ์ ์ง ๋ณด์๋ฅผ ์ ๋๋ก ํด ์ฃผ์ง ์๋๋ค๋ฉด ์ฑ๋ฅ์ ์ผ๋ก ์ข์ง ์์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค. ํจ์จ์ ์ธ ์ฝ๋๋ก ์์ฑํ DOM์ ์ง์ ์ ์ดํ๋ ๊ฒ์ด ๋์ฑ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์๋ ์๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ธฐ์ ์ํฉ์ ๋ฐ๋ผ ์ด๋ค DOM์ ์ฌ์ฉํ์ฌ ์ ์ดํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ด ์ค์ํ๊ฒ ๋ค.
์ฐธ๊ณ
'Study > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] React์ Vanilla JS ๊ฐ๋ฐ์ ์ฐจ์ด์ (0) | 2022.07.08 |
---|