virtual DOM ์ฌ์ฉ
๋๋ฌด ๋ง์ด ์ ๋ฐ์ดํธํ๋ ๋นํจ์จ์ ์ธ ์ฐ์ฐ์ ์ค์ด๊ณ ์ ๋ง๋ ๊ฐ์์ DOM
DOM ๊ตฌ์กฐ๋ฅผ ์ฒดํฌํ๋ ๋ณ๊ฒฝํ๋ ๋ฐฉ์์ด ๋ณต์กํ๋ฉฐ ๋จ์ํ/์๋ํ ํ๊ธฐ ์ํด ๋ง๋ค์ด์ง
Virtual DOM ๋์ ์๋ฆฌ
- UI๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ ์ฒด UI๋ฅผ Virtual DOM์ผ๋ก ๋ ๋๋ง
- ํ์ฌ Virtual DOM๊ณผ ์ด์ Virtual DOM์ ๋น๊ตํด ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ์ค์ DOM์ ๋ฐ์
- ๊ฐ์ ๋ ๋ ๋๋ง์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง DOM์ ์ ์ฉ, ์ํ ๋ณํ ์๋๊ฐ์ง, ๋น ๋ฅธ ํ๋ฉด ๋ ๋๋ง ๊ฐ๋ฅ
Vue3์ Virtual DOM ์๋ก์ด ๋ ๋๋ง ์ ๋ต
- ํ ํ๋ฆฟ ๊ตฌ๋ฌธ์์ ์ ์ ์์์ ๋์ ์์๋ฅผ ๊ตฌ๋ถํ์ฌ ํธ๋ฆฌ ์ํ ์ ๋์ ์์๋ง ์ํ
๊ตฌ๋ฌธ ๋ด์ ์ ์ ์์ญ์ ๋ฏธ๋ฆฌ ๋ธ๋ก์ผ๋ก ๊ตฌ๋ถํ์ฌ ๋ ๋๋ง ์ ์ ์ ๋ธ๋ก์๋ ์ ๊ทผx, ๋์ ์์ ์ฝ๋์๋ง ์ ๊ทผํ์ฌ ๋ ๋๋ง ํธ๋ฆฌ ํ์ ์ต์ ํ
- ๋ ๋๋ง ์ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ๋ฒ ์์ฑ๋๋ ๊ฒ ๋ฐฉ์งํ๊ธฐ ์ํด ์ปดํ์ผ๋ฌ๊ฐ ๋ฏธ๋ฆฌ ํ ํ๋ฆฟ ๊ตฌ๋ฌธ ๋ด ์ ์ ์์, ์๋ธํธ๋ฆฌ, ๋ฐ์ดํฐ ๊ฐ์ฒด ๋ฑ์ ํ์งํด ๋ ๋๋ฌ ํจ์ ๋ฐ์ผ๋ก ํธ์ด์คํ
๋ ๋๋ง ์ Render๋ง๋ค ๊ฐ์ฒด๋ฅผ ๋ค์ ์์ฑํ๋ ๊ฒ ๋ฐฉ์ง
- ์ปดํ์ผ๋ฌ๊ฐ ๋ฏธ๋ฆฌ ํ ํ๋ฆฟ ๊ตฌ๋ฌธ ๋ด์์ ๋์ ๋ฐ์ธ๋ฉ ์์์ ๋ํด ํ๋๊ทธ ์์ฑ ์ปดํ์ผ๋ฌ๊ฐ ๋ฏธ๋ฆฌ ์์ฑํด๋ ํ๋๊ทธ๋ก ํ์ํ ๋ถ๋ถ๋ง ์ฒ๋ฆฌํ์ฌ ๋ ๋๋ง ์๋ ํฅ์
> ํธ๋ฆฌ์์ดํน ๊ฐํ
- ๋ชจ๋์ ๋ฒ๋ค๋งํ๋ ๊ณผ์ ์์ ์ฌ์ฉํ์ง ์๋ ์ฝ๋ ์ ๊ฑฐ -> ํ์ผํฌ๊ธฐ ์ค์ด๋ฆ, ๋ก๋ฉ์ฑ๋ฅ ํฅ์
- Bundle ํฌ๊ธฐ ์ ๋ฐ ์ด์์ผ๋ก ์ค์
> ํ์ ์คํฌ๋ฆฝํธ ์ง์
- ํ์ ์คํฌ๋ฆฝํธ์ ํ์ ์ถ๋ก ๋ฐฉ์์ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ ์ธํ์ง ์์๋ ์ถ๋ก ๊ฐ๋ฅํด์ผํจ(๊ฐ์ฒด ๊ตฌ์กฐ ํน์ฑ์ ์ผ์ผ์ด ํ์ ์ ์)
> SFC(sing file component)
- ๋จ์ผ ํ์ผ ์ปดํฌ๋ํธ
- ํ๋์ ํ์ผ์ด ํ๋์ ์ปดํฌ๋ํธ
- HTML CSS Javascript๋ฅผ <template> <script> <style> ๋ธ๋ญ์ผ๋ก ์บก์ํ
> Template ๋ฌธ๋ฒ
- ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ๋ ๋๋งํ๋ ๊ณผ์ ์์ ํ ํ๋ฆฟ์ด๋ผ๋ ๋ฌธ๋ฒ ์ฌ์ฉ
- vue ํ ํ๋ฆฟ์ HTML CSS ๋ฑ์ ๋งํฌ์ ์์ฑ๊ณผ ๋ฐ์ดํฐ ๋ฐ ๋ก์ง๋ค์ ์ฐ๊ฒฐ -> HTML ํํ๋ก ๋ณํ
> Vue-CLI
- Vue ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ๋๊ตฌ, ์๋์ผ๋ก Vue ํ๋ก์ ํธ ์์ฑํด์ค
- Babel๊ณผ Webpack ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊น์ง ๊ด๋ฆฌํด์ฃผ๋ ํ๋ก์ ํธ ๊ตฌ์ถ ์ฉ์ด
- ๊ธฐ๋ณธ์ ์ธ ํ๋ก์ ํธ ์ธํ (ํด๋๊ตฌ์กฐ, Lint์ build๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌ์ฑ, Webpack)
> Vue.js์ Component
- ๋จ์ผ ํ์ผ ์ปดํฌ๋ํธ๋ฅผ ์ถ์ฒ
- css๋ ์์ css์ ์ํฅ ๋ฐ์ง ์์(๋น๋ ์์ ์ ๊ณ ์ ํ ์ ๋ ํฐ ์ด๋ฆ์ผ๋ก ๋์ฒดํ๋ ๋ฐฉ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ)
- ๋ ์ด์์์ ๊ฐ ์น์ ์ด ํธ๋ฆฌ ํํ๋ก ๊ตฌ์ฑ๋๋ฏ์ด ์ด์ ์์ํ๋ ์ปดํฌ๋ํธ๋ฅผ ํธ๋ฆฌํํ๋ก ๊ตฌ์ฑํ์ฌ ๊ฐ๋ฐํ๋ ๊ตฌ์กฐ
> MVVM ๋ชจ๋ธ
- HTML DOM์ด view์ญํ , JS๊ฐ Model ์ญํ
- ๋ทฐ๋ชจ๋ธ์ด ์๋ ์ํคํ ์ฒ์์๋ getElementByid์ ๊ฐ์ DOM API๋ฅผ ์ง์ ์ด์ฉํด์ ๋ชจ๋ธ๊ณผ ๋ทฐ ์ฐ๊ฒฐํด์ผํ์
ex) jQuery
Vue React
๊ณตํต์ :
๊ฐ์๋ ์ฌ์ฉ
์ปดํฌ๋ํธ ์ ๊ณต
๋ทฐ์๋ง ์ง์ค, ๋ผ์ฐํฐ, ์ํ๊ด๋ฆฌ๋ฅผ ์ํด์ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
์ฑ๋ฅ์ ์ฐจ์ด:
react์์๋ ๋ถํ์ํ ์ ๋ฐ์ดํธ ๋ฐฉ์งํ ๋ shouldCoponentUpdate ๋ผ๋ ๋ฉ์๋๋ฅผ ํตํด์ ์ต์ ํ
Vue์์๋ ์ปดํฌ๋ํธ์ ์ข ์์ฑ์ด ๋ ๋๋ง ์ค ์๋์ผ๋ก ์ถ์
'WEB > Front-End๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React project ์ค ๋์ง๋์ง ์ค๋ฅ ๋ชจ์(+React๋ ์๊ด์๋ ๊ฒ๋) (0) | 2022.01.06 |
---|---|
[React+Firebase] Set up, Auth (0) | 2022.01.04 |
[React Hooks] useFullscreen, useNotification, useAxios (0) | 2021.12.20 |
[React Hooks] useFadeln, useNetwork, useScroll (0) | 2021.12.19 |
[React Hooks] useConfirm, preventLeave, useBeforeLeave (0) | 2021.12.19 |