์ฌ์ค ์ด ๊ธ์ ์ ๋ชฉ์ ๋ฆฌ์กํธ์ ๊ฐ์ ๋์ด ์๋๋ผ ๋ชจ๋ ๊ฐ์ ๋์ ์ ๋น ๋ฅธ์ง. ๋ผ๊ณ ํด์ผ ๋ง๋ ํํ์ด๋ค.
๊ฐ์ Dom(Virtural Dom) ์ ๋ฆฌ์กํธ๋ง ์ฌ์ฉํ๊ณ ์๋ ๊ฐ๋ ์ด ์๋๋ผ ๋ค๋ฅธ ํ๋ ์์ํฌ๋ ์ฌ์ฉํ๊ณ ์๋ ๊ฐ๋ ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ฐ๋ฆฌ๊ฐ ๊ฐ์ dom์ ์ด์ฉํด์ ๋ฆฌ์กํธ๋ ์ฒ๋ฆฌ๋ฅผ ํ๋ค๊ณ ์๊ณ ์๋๋ฐ, ๋๋์ฒด ์, ์ด๋ป๊ฒ, ๋ฌด์์ด ๋ค๋ฅธ์ง ํ ๋ฒ ์์๋ณด์.
Dom
์ฐ๋ฆฌ๊ฐ ๊ฐ์ ๋์ ์๊ธฐ ์ํด์๋ ๋จผ์ Dom์ ๋ํด ์์์ผ ํ๋ค.
MDN์์ Dom์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ๊ณ ์๋ค.
ํต์ฌ์ ์ฐ๋ฆฌ๊ฐ Javascript์์ HTML์ ์ ๊ทผํ ์ ์๊ฒ ํ๋ ์ญํ ์ด๋ผ๋ ๊ฒ์ด๋ค.
๊ทธ๋ผ DOM์ ์๊น์๋?
HTML์ ๊ตฌ์กฐ๋ฅผ ๋ฌธ์ํ ํด๋์ ๊ฒ. ์ฏค์ผ๋ก ์๊ฐํด๋ณด๋ฉด ๋์ ๋ชจ์์ ์๋ง ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ด๋ค.
๋ฑ ๋ณด๋ฉด ๋ญ๊ฐ ๋ ์ค๋ฅด์ง ์๋? ํด๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ?
๋ง๋ค.
ํด๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์ฒ๋ผ ์๊ฒผ๋๋ฐ, ์ด ํด๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ผ๋ ๊ฒ์ ์ค์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ณ ์๋ ๊ฒ์ด๋ค.
ํ๋์ ๋ฃจํธ ๋ ธ๋๊ฐ ์์ ๋, ์ฌ๋ฌ ์์ ๋ ธ๋์ ๊ทธ ์์ ๋ ธ๋๋ก ์ด๋ฃจ์ด์ง ๊ตฌ์กฐ.
ํธ๋ฆฌ ๊ตฌ์กฐ์ ๋ํด์ ์์ธํ ์๊ณ ์ถ๋ค๋ฉด, ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ์ ๋ฐฉ๋ฌธํด๋ณด์.
์ด๋ป๊ฒ ์ ๊ทผํ๋๋ฐ?
์์์ ์ฐ๋ฆฌ๋ DOM์ HTML์ JS๊ฐ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ๋๋ฐ, ์ฌ์ค ์ฌ๋ฌ๋ถ์ ์ด๋ฏธ ์๊ณ ์๊ฑฐ๋ ๋ชจ๋ฅด์ง๋ง ๋ง์ด ์จ๋ดค๋ ์ฌ๋๋ ์์ ์๋ ์๋ค.
DOM์ด๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด๋ค.
์ด๋ ๊ฒ JS์์ HTML์ ์ ๊ทผํ๋ ค๋ ์ฌ๋ฌ API๋ค์ ์ผ์ปซ๋๋ค.
Virtual DOM
๊ทธ๋ผ ์ด์ ์ค์ DOM์ ๋ํด์ ์์๋ณด์์ผ๋ React์ ๊ฐ์ DOM์ด ๋ฌด์์ด๊ณ ์ ๋น ๋ฅธ์ง์ ๋ํด ์์๋ณด์.
๊ฐ์ ๋์ด๋?
๊ฐ์ ๋์ ์ค์ ๋๊ณผ ์ฌ์ฉ์ ์ฌ์ด์์ ์กด์ฌํ๋ฉฐ ์ฌ์ฉ์๊ฐ ์ค์ ๋์ ๋์ฑ ์์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค.
๊ทธ๋ผ ์ ๊ฐ์ ๋์ด ๋ ๋น ๋ฅผ๊น?
์ฌ์ค ๋ฆฌ์กํธ์ ํต์ฌ์ ๋ณต์กํ ์์ ์ ๋จ์ํ ํ๊ณ ๋ถํ์ํ ์ถ์ํ๋ฅผ ์ ๊ฑฐํ์๋ผ๋ ๋ฉ์ธ ์ปจ์ ์ ๊ฐ๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
์ฐ๋ฆฌ๊ฐ ๋ง์ฝ ์ค์ DOM ๊ฐ์ฒด์ ์ ๊ทผํ๋ ค๊ณ ํ๋ค๋ฉด ์์์ ๋ดค๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ ์ํํด์ผ ํ๋ค.
๊ฐ์ ๋(Virtual DOM)์ ๋ฆฌ์กํธ์ ํต์ฌ์ ์ ํํ ๋ถํฉํ๋ ๊ธฐ๋ฅ์ ์ํํ๋ค.
์ฐ๋ฆฌ๊ฐ DOM ์์์ ์ ๊ทผํ๋ ค๋ฉด ๋ชจ๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ํํด์ผํ๊ณ ์ฌ๋ฌ ๋ฒ์ ์์ ์ด ์์ผ๋ฉด ์ฌ๋ฌ ๋ฒ์ ํธ๋ฆฌ๋ฅผ ์ํํ๋ ๊ทธ๋ฐ ์ผ์ด ๋ฐ์ํ๋ค.
๊ทธ๋ผ ๊ฐ๋ฐ์์ ์ฅ์์๋ ๊ทธ๋ฐ ๋ถํ์ํ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ธฐ ์ํ ์ฝ๋๋ฅผ ์ง์ผํ ๊ฒ์ด๊ณ , ์ด๊ฒ ๋ฐ๋ก ์์ JS๊ฐ ์ด๋ ต๋ค๊ณ ํ๊ฐ๋ฐ๋ ์ด์ ์ค ํ๋๊ฐ ์๋๊น ์๊ฐํ๋ค.
์ด๋ฐ ๊ฒ๋ค์ ๊ฐ์ ๋์ด ์ต์ ์ผ๋ก ์ํํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ๋์ด ๋ ๋น ๋ฅด๋ค๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ๋ช ์ฌํด์ผํ ๊ฒ์ด ์๋ค.
React in Action์ ์ ์ Mark Tirense Tomas๋ ์ด๋ ๊ฒ ๋งํ๋ค.
์ด๋ฌํ ๊ฐ์ dom์ ์ฅ์ ์ ๋จ์ง ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํจ์ด์ง ๋ชจ๋ ์ฑ๋ฅ ISSUE๋ฅผ ํด๊ฒฐํ๋ ค๋ ๋ง๋ณ ํต์น์ฝ์ผ๋ก ๋ณด์์ ์๋๋ค.
๋๊ธ