ํ๋ก ํธ์๋ ๊ฐ๋ฐ ๊ณต๊ณ ๋ฅผ ์ดํด๋ณด๋ฉด ๋ฆฌ์กํธ๋ฅผ ๋ค๋ฃจ๋ ์ฌ๋์ ์ ๋ง ๋ง์ด ๋ฝ๋ ๊ฒ ๊ฐ๋ค.
์ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๊ณ , ๋ฆฌ์กํธ๊ฐ ์ฃผ๋ ์ด์ ์ ๊ณต๋ถํด ๋ณด๊ณ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
๋ฆฌ์กํธ : ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ๋ฐ, ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋๋ฐ ์ฌ์ฉํจ.
๊ฐ๋จํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ๋ฆฌํ์๋ฉด,
์ฌ์ฉ์๊ฐ ์ ํ/์๋น์ค๋ฅผ ์ฌ์ฉํ ๋, ๋ง์ฃผํ๊ฒ ๋๋ ๋ฉด
์ด๋ค.
์ฌ์ฉ์๊ฐ ์ ํ/์๋น์ค์ ์ํธ์์ฉ ํ๋๋ก ๋ง๋ค์ด์ง ๋งค๊ฐ์ฒด์ธ ์
์ด๋ค.
๋ทํ๋ฆญ์ค ์น์ฌ์ดํธ๋ฅผ ์๋ก ๋ค์ด๋ณด์.
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ํ๊ณ . ์ฒ์ ํ๋ฉด์ ๋ค์ด๊ฐ๋ฉด, ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ์ฌ์ฉ์์ ๋ง์ฃผํ๊ฒ ๋๋ค.
๋ทํ๋ฆญ์ค ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ฉด, ํ๋ฉด์ ํ์ด๋ ์ํธ์์ฉ์ด ๊ต์ฅํ ์ํ ํ๋ค.
๊ธด ๋ก๋ฉ์ ๊ธฐ๋ค๋ฆด ํ์๋ ์๊ณ ,
์น ์ฌ์ดํธ
์์๋, ๋ชจ๋ฐ์ผ ์ฑ
์ ์ด์ฉํ๋ ๊ฑฐ ๊ฐ์ด ํธ--์ ํ๋ค.
๊ธฐ์กด์ ์น ์ฌ์ดํธ๋ ๋งํฌ๋ ๋ฒํผ์ ๋๋ฅด๋ฉด, ์์ฒญ์ด ์๋ฒ์ ์ ์ก๋๊ณ ,
์๋ก์ด HTML ํ์ด์ง๊ฐ ๋ธ๋ผ์ฐ์ ๋ก ๋ณด๋ด์ ธ์, ํ๋ฉด์ ๋ณด์ฌ์ก๋ค.
๊ฒฐ๊ตญ, ์ฌ์ฉ์๋ ์ HTMLํ์ด์ง๊ฐ ์๋ฒ๋ก๋ถํฐ ๋ฐ์์ง๋๊น์ง, ๊ธฐ๋ค๋ ค์ผ ํ๋ค.
์ด๋ฌํ ๋ฐฉ์์, ์ ์ ์ ํ๋๊ณผ ํ๋ฆ์ ๋ฐ๋ผ ์นํ์ด์ง๋ฅผ ๋ค๋ฅด๊ฒ ํด์ผ ํ๋,
๋์ ์ธ ์นํ์ด์ง
์ ํจ๊ณผ์ ์ด์ง ๋ชปํ๋ค.
ํ์ง๋ง, ์ ์ ์ธ ํ์ด์ง๋ณด๋ค, ๋์ ์ธ ํ์ด์ง๊ฐ ๊ต์ฅํ ๋ง๊ณ , ์น์ ๋จ์ํ ํ์ด์ง๊ฐ ์๋๋ผ, ๋์ ์ด๊ณ ๋์ฑ ๋ณต์กํด์ก๋ค
์ ์ ๊ฐ ์ด๋ค ํ๋์ ํ๋ฉด ์ฌ์ฉ์์ ์ธํฐํ์ด์ค
๊ฐ ์ง์์ ์ผ๋ก ๋ณํด์ผ ํ๋ค.
์ฌ์ฉ์์ ์ํธ์์ฉ์ UI๋ก ์ฝ๊ฒ ๊ตฌํํ๊ณ , ๋ณต์กํ,๋๊ท๋ชจ์ ์น์ ๊ด๋ฆฌํ๋ ค๊ณ !
์ด๋ฐ ์ด์ ๋ก ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๋ค.
๐ ์๋, ๊ทธ๊ฑด ์๋ฐ์คํฌ๋ฆฝํธ๋ก๋ ํ ์ ์๋ ๊ฑฐ ์๋๊ฐ์?
๋ง๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ DOM์ ์ด์ฉํ๋ฉด, ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฌ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ DOM์ ํ์ด์ง๊ฐ ๋ฐ๋๋๋ง๋ค ์ HTML
์ ๋ก๋ํ๋ค.
๊ทธ๋ฆฌ๊ณ DOM Tree์์ ๋
ธ๋๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์
๋ฐ์ดํธํ ๋๋ง๋ค ์น ํ์ด์ง์ ๋ฐ์๋๋ค.
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ํธ๋ฆฌ ๊ตฌ์กฐ์์, ํ๋์ ๋
ธ๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๋ค๋ฉด,
์ ์ฒด ํธ๋ฆฌ
๋ฅผ ๋ค์ ๊ฑด๋๋ ค์ผ ํ ๊ฐ๋ฅ์ฑ์ด ์๊ธด๋ค.
DOM ์๋ฆฌ๋จผํธ ์ถ๊ฐ, ์ ๊ฑฐ ๋๋ ๋ณ๊ฒฝ์, Reflow
๊ฐ ๋ฐ์ํ ์ ์๋ค.
Reflow(Layout)
์ด๋ค ์ก์ ์ด๋ ์ด๋ฒคํธ๋ก, HTML์์์ ์์น๋, ํฌ๊ธฐ๊ฐ ์ฌ์กฐ์ ๋๋ค๋ฉด,
ํด๋น ์์์ ์ํฅ์ ๋ฐ๋ ์์์์๋, ๋ถ๋ชจ์์์ Layout์ ๋ค์ ๊ทธ๋ฆฐ๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ, ๊ฐ ์์๋ค์ ํฌ๊ธฐ์ ์์น๋ฅผ ๋ค์ ๊ณ์ฐํ๊ฒ ๋๋ค.
๋ฐ์ ์ฝ๋๋ Reflow๊ฐ ๋ฐ์ํ๋ ์์์ฝ๋์ด๋ค.
// reflow ๋ฐ์ ์์
function reflow() {
document.getElementById('content').style.width = '600px';
}
์๋ฐ์คํฌ๋ฆฝํธ๋ง ์ฌ์ฉํด์, Reflow
๊ฐ ๊ต์ฅํ ๋ง์ด ๋ฐ์ํ๋ค๋ฉด, ์ฑ๋ฅ์ ํ๊ฐ ์ฌํด์ง๋ ๋ฌธ์ ์ ์ด ์๋ค.
Virtual DOM
Virtual DOM์ ๊ธฐ์กด DOM ์กฐ์์ด ๋ง์ด ์ผ์ด๋ ๊ฒฝ์ฐ,
๋นํจ์จ์ ์ธ ๋๋ ๊ณผ์
์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ์๋ค.!
์ปดํฌ๋ํธ์ ์ํ๊ฐ
์ด ๋ฐ๋๋ ์กฐ๊ฑด์ ๋ค์ํ๋ค.
state,props,redux store ๋ฑ์ ์ํ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ..(๊ณต๋ถํด์ผ ํ ๋ถ๋ถ)
๋ฆฌ์กํธ๊ฐ ํด๋น ์ปดํฌ๋ํธ ํจ์๋ฅผ ์ฌํธ์ถ
ํด์ ์ฌ๋๋๋งํด์ค๋ค.'
์ด๋, ๊ฐ์DOM
์ผ๋ก, ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ UI
๋ง ํจ๊ณผ์ ์ผ๋ก ์
๋ฐ์ดํธ
ํ๋ค.
๊ฐ์ DOM์ DOM์ ๋ถ์ํด ๋ง๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด
์ด๋ค.
์ปดํฌ๋ํธ์ ์ํ๊ฐ
์ด ๋ฐ๋๋ฉด, ์ ๊ฐ์ DOM
๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ,
์ด์ ์ ๊ฐ์ DOM
๊ณผ ๋น๊ต๋ฅผ ํ๋ค. ์ต์ข
์ ์ผ๋ก ๋ฐ๋ ๋ถ๋ถ์ด ์๋ค๋ฉด,
ํด๋น ๋ถ๋ถ๋ง ์ค์ DOM์ ๋ฐ์๋๋ค.
์์ ๊ทธ๋ฆผ์ ํฌ๊ฒ ๊ฐ์ DOM์ ์ฌ์กฐ์ ๊ณผ์ ์ ์ค๋ช ํ ๊ทธ๋ฆผ์ด๋ค.
UI
๊ฐ ๋ณ๊ฒฝ๋๋ฉด, ์ ์ฒด UI
๋ฅผ ๊ฐ์ DOM์ผ๋ก ๋๋๋งํ๋ค.๋ฐฉ๊ธ ๋๋๋ง ํ ๊ฐ์ DOM
๊ณผ ์ด์ ์ ๊ฐ์ DOM
์ ๋น๊ตํด, ์ฐจ์ด๋ฅผ ๊ณ์ฐํ๋ค.DOM
์ ์ ์ฉํ๋ค๊ทธ ์ธ์๋ ์ฌ๋ฌ ์ฅ์ ์ด ์๋ ๊ฒ ๊ฐ๋ค.
์ปดํฌ๋ํธ๋จ์ ์์ฑ, React Native๋ฑ๋ฑ....ํ๋์ฉ ๊ณต๋ถํ ์๊ฐ์ด๋ค!