Front/React.js
[React.js] React(๋ฆฌ์กํธ)
ddo04
2024. 8. 4. 00:27
๐React
- A JavaScript Library for Building User Interfaces
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ๋ณต์กํ ์ฌ์ดํธ๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋ง๋ค๋ฉฐ ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๊ฒ
- SPA
- Single Page Application
- ํ๋์ ํ์ด์ง๋ง ์กด์ฌํ๋ ์น์ฌ์ดํธ ๋๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฏธ
- ํ๋์ HTML ํ์ ๋ง๋ค์ด ๋๊ณ ์ฌ์ฉ์๊ฐ ํน์ ํ์ด์ง๋ฅผ ์์ฒญํ ๋ ๊ทธ ์์ ํด๋นํ๋ ํ์ด์ง์ ๋ด์ฉ์ ์ฑ์์ ๋ณด๋ด์ฃผ๋ ๊ฒ
- React๋ SPA๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋ง๋ค ์ ์๋๋ก ํด์ฃผ๋ ๋๊ตฌ
๐React ์ฅ์
- ๋น ๋ฅธ ์
๋ฐ์ดํธ & ๋ ๋๋ง ์๋
- ์ฐ๋ฆฌ๊ฐ ์น์ฌ์ดํธ๋ฅผ ํ์ํ ๋ ํ๋ฉด์ ๋ํ๋๋ ๋ด์ฉ์ด ๋ฐ๋๋ ๊ฒ
- ๋น ๋ฅธ ์ ๋ฐ์ดํธ๋ ์น์ฌ์ดํธ์์ ๊ต์ฅํ ์ค์ํ ๋ถ๋ถ ์ค ํ๋
- Virtual DOM ์ฌ์ฉ
- ๊ฐ์์ DOM
- DOM (Document Object Model)๋ก ์นํ์ด์ง๋ฅผ ์ ์ํ๋ ํ๋์ ๊ฐ์ฒด
- ํ๋์ ์น์ฌ์ดํธ์ ๋ํ ์ ๋ณด๋ฅผ ๋ชจ๋ ๋ด๊ณ ์๋ ํฐ ๊ทธ๋ฆ
- ์นํ์ด์ง์ ์ค์ DOM ์ฌ์ด์์ ์ค๊ฐ ๋งค๊ฐ์ฒด ์ญํ ์ ํ๋ ๊ฒ
- ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์์ ์ํธ์์ฉ์ ํ๋ ์น์ฌ์ดํธ ๊ฐ์ ๊ฒฝ์ฐ ํ๋ฉด์ ์ ๋ฐ์ดํธ๊ฐ ์์๋ก ์ด๋ค์ง
- ํ๋ฉด์ด ์ ๋ฐ์ดํธ ๋๋ค๋ ๋ง์ DOM์ด ์์ ๋๋ค๋ ๋ง๊ณผ ๋์ผ
- DOM์ ์ง์ ์์ ํ๋ ๊ธฐ์กด์ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ ์ํฅ์ ํฌ๊ฒ ๋ฏธ์น๊ณ ๋น์ฉ๋ ๋ง์ด ๋ฌ
- React๋ DOM์ ์ง์ ์์ ํ๋ ๊ฒ์ด ์๋๋ผ ์ ๋ฐ์ดํธํด์ผ ํ ์ต์ํ์ ๋ถ๋ถ๋ง์ ์ฐพ์์ ์ ๋ฐ์ดํธ
- ๊ฒ์๋ ๋ถ๋ถ๋ง์ ์ ๋ฐ์ดํธํ๊ณ ๋ค์ ๋ ๋๋ง ํ๋ฉด์ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ๋น ๋ฅด๊ฒ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค ์ ์์
- Component-Based
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ๊ตฌ์กฐ
- ์บํฌ๋ํธ๋ ๊ตฌ์ฑ์์๋ผ๋ ๋ป์ ๊ฐ์ง
- React์์๋ ๋ชจ๋ ํ์ด์ง๊ฐ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋์ด ์๊ณ ํ๋์ ์ปดํฌ๋ํธ๋ ๋ ๋ค๋ฅธ ์ฌ๋ฌ ๊ฐ์ ์ปดํฌ๋ํธ์ ์กฐํฉ์ผ๋ก ๊ตฌ์ฑ
- React๋ก ๊ฐ๋ฐ๋ ์นํ์ด์ง๋ ์๋ง์ ์ปดํฌ๋ํธ์ ์กฐํฉ์ผ๋ก ๊ตฌ์ฑ
- ์ฌ์ฌ์ฉ์ฑ (Reusability)
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ธ ๋ ๋ฑ์ฅํ๋ ๊ฐ๋
- ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์์ด ๊ต์ฅํ ์ค์ํ ๊ฐ๋
- ๊ฒ์ํ์ฌ ๋ค์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์ฑ์ง ์๋ฏธ
- ์ฌ์ฌ์ฉ์ด๋ผ๋ ๊ฐ๋ ์ ์ํํธ์จ์ด ๋ถ์ผ์์๋ง ์ฌ์ฉ
- ๋ชจ๋ ์ํํธ์จ์ด๊ฐ ๊ณง๋ฐ๋ก ์ด๋ค ๊ณณ์ ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ์ง๋ ์์
- ์ฌ์ฌ์ฉ์ ํ๋ ค๊ณ ํ ๋ ์์กด์ฑ ๋ฌธ์ ๋ง๊ณ ๋ ์ฌ๋ฌ๊ฐ์ง ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์
- ์ํํธ์จ์ด ๊ฐ๋ฐํ ๋ ์ฌ์ฌ์ฉ์ฑ์ด ๋๊ฒ ๊ฐ๋ฐํด์ผ ํ๋ค๋ ๊ฒ์ ์ํํธ์จ์ด ๋๋ ๋ชจ๋์ด ๋ค๋ฅธ ๊ณณ์๋ ์ฝ๊ฒ ๊ณง๋ฐ๋ก ์ธ ์ ์๋๋ก ๊ฐ๋ฐํ๋ ๊ฒ์ ์๋ฏธ
- ๋ค๋ฅธ ๋ชจ๋์ ์์กด์ฑ์ ๋ฎ์ถ๊ณ ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ๊ฐ๋ฐํด์ผ ํ๋ค๋ ์๋ฏธ
- ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง์ ๋ฐ๋ฅธ ์ฅ์
- ์ ์ฒด์ ์ธ ์ํํธ์จ์ด์ ๊ฐ๋ฐ ๊ธฐ๊ฐ ๋จ์ถ
- ๋น์ทํ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ค๊ณ ํ ๋ ๊ธฐ์กด์ ๊ฐ๋ฐํด ๋ ๋ชจ๋์ ๊ณง๋ฐ๋ก ์ฌ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ๊ธฐ๊ฐ์ ๊ต์ฅํ ๋ง์ด ์ค์ผ ์ ์์
- ์ ์ง ๋ณด์๊ฐ ์ฉ์ดํจ
- ์ฌ๋ฌ ๊ฐ์ ์ํํธ์จ์ด์์ ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ ๋ชจ๋์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ํด๋น ๋ชจ๋๋ง ์์ ํด์ ๋ค์ ๋ฐฐํฌํ๋ฉด ๋จ
- ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ์์์น ๋ชปํ ๋ฒ๊ทธ๋ฅผ ๋ง์ฃผํ๋ ์ํฉ์ด ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ ๋ฐ ์ด๋ฐ ๊ฒฝ์ฐ ์ฌ์ฌ์ฉ์ฑ์ด ๋์ ํํ๋กค ๊ฐ๋ฐ๋์ด ์๋ค๋ฉด ์ข ๋ ๋ฒ๊ทธ์ ์์ธ์ ์ฐพ๊ธฐ ์ฌ์
- ์ฌ์ฌ์ฉ์ฑ์ด ๋๋ค๋ ๊ฒ์ ์ฌ๋ฌ ๋ชจ๋ ๊ฐ์ ์์กด์ฑ์ด ๋ฎ๋ค๋ ๊ฒ์ ๋ปํจ
- ๊ฐ ๋ถ๋ถ์ด ์ ๋ถ๋ฆฌ๋์ด ์๊ณ ์ฝ๊ฒ ๋ฒ๊ทธ๋ฅผ ์ฐพ์์ ์์ ํ ์ ์์
- ์ ์ฒด์ ์ธ ์ํํธ์จ์ด์ ๊ฐ๋ฐ ๊ธฐ๊ฐ ๋จ์ถ
- ๋ฆฌ์กํธ์ ์ฌ์ฌ์ฉ์ฑ
- ๊ฐ ์ปดํฌ๋ํธ๋ค์ ์น ์ฌ์ดํธ์ ์ฌ๋ฌ ๊ณณ์์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์์
- ํ๋์ ์ปดํฌ๋ํธ๊ฐ ๊ณ์ํด์ ์ฌ์ฌ์ฉ๋ ์ ์์
- ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๋ฐํ ๋ ํญ์ ์ฝ๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํํ๋ก ๊ฐ๋ฐํ๋ ๊ฒ์ด ์ค์
- ๋ค๋ฅธ ์น์ฌ์ดํธ๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐ์ด ๊ฐ๋ฅ
- Meta๋ผ๋ ๋ ๋ ํ ์ง์๊ตฐ
- React๋ Meta๊ฐ ๋ง๋ ์คํ์์ค ํ๋ก์ ํธ
- ์คํ์์ค ํ๋ก์ ํธ๋ผ๊ณ ํด์ ๋ชจ๋ ๊ฒ์ด ๋ฌด๋ฃ๋ก ์์์ ๋์๊ฐ์ง๋ ์์
- ํ๋ก์ ํธ๊ฐ ์ฑ์ฅํ๊ณ ๊พธ์คํ ์ ์ง๋๊ธฐ ์ํด์๋ ์๋ง์ ๊ฐ๋ฐ์๋ค์ ๋ ธ๋ ฅ์ด ํ์
- ํ๋ฐํ ์ง์๊ณต์ & ์ปค๋ฎค๋ํฐ
- ์ด๋ค ์๋ก์ด ๊ธฐ์ ์ด ๋ฑ์ฅํ๋ ์ด์ฐฝ๊ธฐ์๋ ํด๋น ๊ธฐ์ ์ ์ฒ์ ์ฌ์ฉํ๋ค๊ฐ ์ด๋ ์๊ฐ ๋ชจ๋ฅด๋ ๊ฒ์ด ๋ฑ์ฅํ์ฌ ์งํ์ด ๋งํ๊ฑฐ๋ ๋๋์ง๋ ๊ฒฝ์ฐ ์๊น
- ๊ฐ๋ฐ ์ํ๊ณ์ ์ปค๋ฎค๋ํฐ๊ฐ ๊ฐ์ถฐ์ ธ ์์ง ์์ผ๋ฉด ์ํ๋ ๋ต์ ์ป๊ธฐ๊ฐ ์๊ฐ๋ณด๋ค ํ๋ฌ
- ํ๋ฐํ ์ง์๊ณต์ ์ ํ์ฑํ๋ ์ปค๋ฎค๋ํฐ๋ React์ ๊ต์ฅํ ํฐ ์ฅ์ ์ด์ ์ค์ํ ๋ถ๋ถ
- ๋ด๊ฐ ๋ชจ๋ฅด๋ ๊ฒ์ ๋ฐ๋ก๋ฐ๋ก ์ฐพ์์ ๋ณผ ์ ์๋ค๋ ๊ฒ์ ์์ฒญ๋ ์ฅ์ ์ด ๋จ
- ๋ฆฌ์กํธ๋ฅผ ๋ฐฐ์ด ์ดํ์ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ฐ์ผ ํ๊ฒฝ UI ํ๋ ์์ค์ ์ฌ์ฉํ์ฌ ๋ชจ๋ฐ์ผ ์ฑ๋ ๊ฐ๋ฐ ๊ฐ๋ฅ
- ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ก ํ๋ฒ ์ฝ๋ฉํด์ ์๋๋ก์ด๋ ์ฑ๊ณผ ios ์ฑ์ ๋์์ ์ ์ ๊ฐ๋ฅ
- ๋ค์ดํฐ๋ธ ์ฑ๋ณด๋ค ์ฑ๋ฅ์ด๋ ์๋ ๋ฉด์์ ๋ถ์กฑํ ๋ถ๋ถ์ ๋ณด์ผ ์ ์์ง๋ง ๊ฐ๋จํ ์์ค์ ์ฑ์ ์ฌ์ฉ์๊ฐ ์ฐจ์ด์ ์ ๋๋ผ์ง ๋ชปํ ์ ๋๋ก ๊ฐ๋ฐ ๊ฐ๋ฅ
๐React ๋จ์
- ๋ฐฉ๋ํ ํ์ต๋
- ๊ธฐ์กด๊ณผ๋ ๋ค๋ฅธ ๋ฐฉ์์ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ๋ฐฐ์์ผ ํ ๊ฒ์ด ๋ง์
- ์๋ก์ด ๊ฐ๋ ๋ค์ด ๊ต์ฅํ ๋ง์ด ๋ฑ์ฅ
- ํน์ ๊ธฐ์ ์ ํ๋ฒ ๋ฐฐ์ ๋ค๊ณ ๋๋๋ ๊ฒ์ด ์๋ ๋ฐ๋๋ ๋ถ๋ถ์ ๋ํด์๋ ๊พธ์คํ ๊ณต๋ถํ์ฌ์ผ ํจ
- ์๋ก์ด ๋ฒ์ ์ด ๋์ค๋ฉด ์ด์ ๋ํ ๋ด์ฉ์ ํ์ตํ๊ณ ์ดํดํ๊ณ ์์ด์ผ ์ค์ ์ ๋ฌด์์ ์ํํ๊ฒ ๊ฐ๋ฐ ํ ์ ์์
- ๋์ ์ํ๊ด๋ฆฌ ๋ณต์ก๋
- state๋ผ๋ ๊ต์ฅํ ์ค์ํ ๊ฐ๋ ๋ฑ์ฅ
- state์ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ์๋ฏธ
- VirtualDOM์์ ๋ฐ๋ ๋ถ๋ถ์ด state๊ฐ ๋ฐ๋ ์ปดํฌ๋ํธ๋ฅผ ์๋ฏธ
- state๋ ๊ต์ฅํ ์ค์ํ ์ญํฅ์ ๋ด๋นํ๊ณ ์๋ค๊ณ ํ ์ ์์
- ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด state๋ฅผ ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ค์ํ๋ฐ ์ฒ์์ ์๊ฐ๋งํผ ์ฝ์ง ์์ ์๋ ์๊ณ ์ต์ํด์ง๋๋ผ๋ ์น ์ฌ์ดํธ์ ๊ท๋ชจ๊ฐ ์ปค์ ธ ์ปดํฌ๋ํธ์ ๊ฐ์๊ฐ ๋ง์์ง๋ฉด ์ํ ๊ด๋ฆฌ์ ๋ณต์ก๋๋ ์ฆ๊ฐ
- ๋ณดํต ํฐ ๊ท๋ชจ์ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํด ์ธ๋ถ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
๐๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์์ฃผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ๋ค์ ์ ๋ฆฌํด ๋ชจ์ ๋์ ๊ฒ
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํน์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์์ฃผ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ๋ค์ ์ ๋ชจ์์ ์ ๋ฆฌํด ๋์ ๋ชจ์์ง
๐์ฌ์ฉ์ ์ธํฐํ์ด์ค (User Interface, UI)
- ์ฌ์ฉ์์ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด ์๋ก ์ํธ์์ฉ์ ํ๊ธฐ ์ํด ์ค๊ฐ์์ ์๋ก ๊ฐ์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ์ ์ดํด์ฃผ๋ ๊ฒ
๐UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํ ๊ธฐ๋ฅ ๋ชจ์์ง
- React๋ ๋ํ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ํ๋ฉด์ ๋ง๋ค๊ธฐ ์ํ ๊ธฐ๋ฅ์ ๋ชจ์ ๋์ ๊ฒ
๐ํ๋ ์์ํฌ VS ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ๋ํ ์ ์ด ๊ถํ
- ํ๋ ์์ํฌ๋ ํ๋ฆ์ ์ ์ด ๊ถํ์ ๊ฐ๋ฐ์๊ฐ ์๋ ํ๋ ์์ํฌ๊ฐ ๊ฐ์ง๊ณ ์์
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ฆ์ ๋ํ ์ ์ด๋ฅผ ํ์ง ์๊ณ ๊ฐ๋ฐ์๊ฐ ํ์ํ ๋ถ๋ถ๋ง ํ์ํ ๋ ๊ฐ์ ธ๋ค ์ฌ์ฉํ๋ ํํ