๐ ์ ๋ฆฌ์กํธ์ธ๊ฐ?
์ด๋ค ๋ฐ์ดํฐ๊ฐ ๋ณํ ๋๋ง๋ค
์ด๋ค ๋ณํ๋ฅผ ์ค์ง ๊ณ ๋ฏผํ๋ ๊ฒ์ด ์๋๋ผ
๊ทธ๋ฅ ๊ธฐ์กด์ ๋ทฐ๋ฅผ ๋ ๋ ค ๋ฒ๋ฆฌ๊ณ ์ฒ์๋ถํฐ ์๋ก ๋ ๋๋ง ํ๋ ๋ฐฉ์
๊ทธ๋ฐ๋ฐ ์ด๋ฐ ๋ฐฉ์์ด ๊ฐ๋ฅ ํ ๊น? DOM์ ๋๋ฆฐ๋ฐ..
๋ฆฌ์กํธ ์ดํด
- ์ปดํฌ๋ํธ: ๋ฆฌ์กํธ์์ ํน์ ๋ถ๋ถ์ด ์ด๋ป๊ฒ ์๊ธธ์ง ์ ํ๋ ์ ์ธ์ฒด
- ๋ฆฌ์กํธ์ ์ฑ๋ฅ ํฅ์: '์ด๊ธฐ ๋ ๋๋ง'๊ณผ '๋ฆฌ๋ ๋๋ง'
1. ์ด๊ธฐ ๋ ๋๋ง
- Render ํจ์๋ ๊ทธ ๋ด๋ถ์ ์๋ ์ปดํฌ๋๋๋ค์ ์ฌ๊ท์ ์ผ๋ก Rendering
- ์ต์์ ์ปดํฌ๋ํธ์ ๋ ๋๋ง ์์
์ด ๋๋๋ฉด HTML ๋งํฌ์
(๋ฌธ์์ด)์ ๋ง๋ค๊ณ DOM์ ์ฃผ์
2. ์กฐํ ๊ณผ์
- ์
๋ฐ์ดํธ ๊ณผ์ ์ด ์๋ "์กฐํ(reconcilation) ๊ณผ์ "
- ๋ทฐ๊ฐ ๋ณํ๋๋ ๊ฒ์ด ์๋๋ผ ์๋ก์ด ์์๋ก ๊ฐ์ ๋ผ์ฐ๋ ๊ณผ์
- ์ปดํฌ๋ํธ๋ ๋ฐ์ดํฐ๋ฅผ ์
ํ
์ด๋ ํ์ ๋ ๊ฐ์ ์์ ํ๋ ๊ฒ์ด ์๋๋ผ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ render ํจ์๋ฅผ ๋ค์ ํธ์ถ
- ๊ทธ๋ ๊ฒ ๋ง๋ ๊ฒฐ๊ณผ๋ฅผ ๊ณง ๋ฐ๋ก DOM์ ๋ฐ์ํ์ง ์๊ณ , ์ด์ ์ ๋ง๋ ๊ฒฐ๊ณผ์ ๋น๊ตํ์ฌ ๋์ ์ฐจ์ด๋ฅผ ๊ฐ์ง๊ณ ๋ณ๊ฒฝ์ด ํ์ํ ์์๋ง DOM ํธ๋ฆฌ๋ฅผ ์
๋ฐ์ดํธ
๐ ๋ฆฌ์กํธ ํน์ง
Virtual DOM
1. DOM์ด๋?
- DOM = Document Object Model (XML or HTML)
- ๋์ UI์ ์ต์ ํ๋์ด ์์ง ์๋ค.
- DOM ์์ฒด๋ ๋น ๋ฅด๋ค
- JS๊ฐ ๊ฐ์ฒด๋ฅผ ์ฒ๋ฆฌํ๋ ์ฑ๋ฅ๊ณผ ๊ฑฐ์ ๋๊ฐ๋ค.
- ๋ค๋ง DOM์ ๋ณํ๊ฐ ์ผ์ด๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ CSS๋ฅผ ๋ค์ ์ฐ์ฐํ๊ณ , ๋ ์ด์์์ ๊ตฌ์ฑํ๊ณ , ํ์ด์ง๋ฅผ ๋ฆฌํ์ธํธ ํ๋ ๊ณผ์ ์์ ์๊ฐ์ด ํ๋น๋๋ ๊ฒ.
๋ฆฌ์กํธ๋ Virtual DOM ๋ฐฉ์์ ์ฌ์ฉํ์ฌ DOM ์
๋ฐ์ดํธ๋ฅผ ์ถ์ํํจ์ผ๋ก์จ DOM ์ฒ๋ฆฌ ํ์๋ฅผ ์ต์ํํ๊ณ ํจ์จ์ ์ผ๋ก ์งํํจ
2. Virtual DOM
- ๋ฐ์ดํฐ๋ฅผ ์
๋ฐ์ดํธํ๋ฉด ์ ์ฒด UI๋ฅผ Virtual DOM์ ๋ฆฌ๋ ๋๋งํ๋ค,
- ์ด์ Virtual DOM์ ์๋ ๋ด์ฉ๊ณผ ํ์ฌ ๋ด์ฉ์ ๋น๊ตํ๋ค.
- ๋ฐ๋ ๋ถ๋ถ๋ง ์ค์ DOM์ ์ ์ฉํ๋ค.
๐งถ ์์
ํ๊ฒฝ์ค์
- Nodejs์ Yarn ์ค์นํ๊ธฐ
- ๊ธฐ๋ณธ ์ธํ
ํ๊ธฐ: ์๋ ๋ ์ค ํ๋ ์ ํ
- yarn create react-app "ํ๋ก์ ํธ ์ด๋ฆ"
- npm init react-app "ํ๋ก์ ํธ ์ด๋ฆ"