๐งฑ ์น ํ์ด์ง๊ฐ ๋ง๋ค์ด์ง๋ ๊ณผ์
- ์น๋ธ๋ผ์ฐ์ ๊ฐ ์๋ณธ HTML ๋ฌธ์๋ฅผ ์ฝ๊ณ ํ์ฑํ์ฌ ์ต์ข
์ ์ผ๋ก ์ด๋ค ๋ด์ฉ์ ํ์ด์ง์ ๋๋๋งํ ์ง ๊ฒฐ์ (
๋๋ํธ๋ฆฌ
์์ฑ)
- ๋ธ๋ผ์ฐ์ ๋ ํด๋น ๋๋๋ง์ ์ํ
์ฌ๊ธฐ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋๋ํธ๋ฆฌ
๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋๊ฐ์ ๋ชจ๋ธ์ด ํ์ํ๋ค
- DOM(Document Object Model) โ HTML ์์๋ค์ ๊ตฌ์กฐํ๋ ํํ
- CSSOM(Cascading Style Sheets Object Model) โ ์์๋ค๊ณผ ์ฐ๊ด๋ ์คํ์ผ ์ ๋ณด์ ๊ตฌ์กฐํ๋ ํํ
๊ทธ์ค DOM์ ๋ํด ์ ๋ฆฌํด๋ณด๊ณ ๊ฐ์ DOM๊ณผ ๋น๊ตํด๋ณด๊ณ ์ ํ๋ค
๐จ DOM
DOM(Document Object Model)
: ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ
- ์๋ณธ HTML๋ฌธ์์ ๊ฐ์ฒด ๊ธฐ๋ฐ ํํ๋ฐฉ์์ผ๋ก ๋จ์ ํ
์คํธ๋ก ๊ตฌ์ฑ๋ HTML ๋ฌธ์์ ๋ด์ฉ๊ณผ ๊ตฌ์กฐ๊ฐ ๊ฐ์ฒด ๋ชจ๋ธ๋ก ๋ณํ๋๋ ๊ฒ
- ๋ทฐ ํฌํธ์ ๋ฌด์์ ๋๋๋งํ ์ง ๊ฒฐ์ ํ๊ธฐ ์ํด ์ฌ์ฉ
- ํ์ด์ง์ ์ฝํ
์ธ ๋ฐ ๊ตฌ์กฐ, ์คํ์ผ์ด ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋จ์ ์ํด ์์ ๋๊ธฐ ์ํด ์ฌ์ฉ๋จ
- DOM์ ๊ฐ์ฒด๊ตฌ์กฐ๋
๋
ธ๋ ํธ๋ฆฌ
๋ก ํํ (๋ถ๋ชจ ์ค๊ธฐ, ์ฌ๋ฌ ๊ฐ์ ์์ ๋๋ญ๊ฐ์ง)
๐ข Virtual DOM์ด ํ์ํ ์ด์
- Browser Rendering
- HTML์ ํ์ฑํ์ฌ DOM Tree ์์ฑ, CSS ํ์ฑํ์ฌ ์คํ์ผ ๊ท์น์ ์์ฑ
- Attachment ๊ณผ์ ์ ํตํด Render Tree์์ฑํ์ฌ ๋ฐฐ์น(Layout), ํ๋ฉด์ ๊ทธ๋ฆฌ๊ธฐ(Painting)
=> DOM์ ์์ ํ ๋๋ง๋ค ๋๋ ์์ง์ด ์์ ๊ฐ์ด ๋ณต์กํ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋ค. ์นํ์ด์ง๊ฐ ์ปค์ง๊ณ ๋ค๋ค์ผํ ๋ฐ์ดํฐ๋ค์ด ๋ง์์ง๊ณ ๋ณ๊ฒฝํด์ผํ ๊ฐ๋ค์ด ๋ง์์ง๋ค๋ฉด ์ฑ๋ฅ๊ณผ ์๋์ ์ํฅ์ ์ฃผ๊ฒ ๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Virtual DOM์ด ๋ฑ์ฅ!
โก Virtual DOM
- ๊ฐ์ DOM์ ์ค์ DOM์ ๋ณต์ฌ๋ณธ
- ๊ฐ์ DOM์ DOM์ ๊ฐ๋ณ๊ฒ ๋ง๋ javascript ํํ
- ์ฃผ๋ก React, Vue.js, Elm์ ์ฌ์ฉ๋จ
- ๊ฐ์ DOM์ ์ค์ ๋ก ์คํฌ๋ฆฐ์ ๋๋๋ง ํ๋ ๊ฒ์ด ์๋๊ธฐ์ DOM์ ์ง์ ์
๋ฐ์ดํธํ๋ ๊ฒ๋ณด๋ค ์๋์ ์ผ๋ก ๋น ๋ฆ
- ๊ฐ์ DOM์ ๋ฉ๋ชจ๋ฆฌ์์ ์ ์ฅ, ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฏธ๋ฆฌ ์ฒ๋ฆฌํ๊ณ ์ ์ฅํ ํ ์ค์ DOM๊ณผ ๋๊ธฐํํ๋ ํ๋ก๊ทธ๋๋ฐ
- ๋ฐ์ดํฐ๊ฐ ์
๋ฐ์ดํธ ๋์์ ๋ ์ ์ฒด UI๊ฐ ๊ฐ์ DOM์์ ๋ฆฌ๋๋๋ง ๋๊ณ ์ค์ DOM๊ณผ ์ฐจ์ด๋ฅผ ๊ณ์ฐ ํ ๋ณ๊ฒฝ ๋ถ๋ถ๋ง ๋ณํ์ํด
*์๋ ์ถ์ฒ ๋ธ๋ก๊ทธ ์ฐธ์กฐ
๐ฃ ์ค๋ ์ ๋ฆฌํ ๊ฒ ์ค ์ค์ ๋ฉด์ ์์ ๋์๋ ์ง๋ฌธ
- ํ์ฑ์ด๋ ๋ฌด์์ธ๊ฐ์
- ์ด๋ค ํ์ด์ง์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ํน์ ํจํด์ด๋ ์์๋ก ์ถ์ถํด์ ๊ฐ๊ณตํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
- xml, html ๋ฑ์์ ๊ตฌ์กฐํ๋ ๋ฌธ์์ด์ ๋ฐ์ดํฐํ ํ๋ ๊ฒ์ ๋งํฉ๋๋ค
- ๋ฐ์ดํฐ๋ฅผ ๋ถํด ๋ถ์ํ์ฌ ์ํ๋ ํํ๋ก ์กฐ๋ฆฝํ๊ณ ๋ค์ ๋นผ๋ด๋ ํ๋ก๊ทธ๋จ์ ๋งํฉ๋๋ค.
=> ์ฆ, ๊ตฌ์กฐํ๋ ๋ฌธ์์ด์ ๋ฐ์ดํฐํํ์ฌ ์ํ๋ ํํ๋ก ์กฐ๋ฆฝํ๊ณ ๋นผ๋ด๋ ์์
์ ๋งํฉ๋๋ค.
- DOM์ ๋ฌด์์ธ๊ฐ์?
- ํ
์คํธ ๋ฌธ์์ธ HTML์ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด๊ฐ ํ์ฉํ ์ ์๋๋ก ๊ฐ์ฒด ๋ชจ๋ธ๋ก ๋ณํํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
- DOM์ ๋
ธ๋ ํธ๋ฆฌ ํ์์ผ๋ก ๋ถ๋ชจ ์ค๊ธฐ์์ ์์ ๊ฐ์ง๋ก ๋ป์ด๋๊ฐ๋ ๊ตฌ์กฐ์
๋๋ค
์ถ์ฒ: https://wit.nts-corp.com/2019/02/14/5522
https://velog.io/@kja/Virtual-DOM
https://doqtqu.tistory.com/316
https://kingpodo.tistory.com/8