๋ฌด์ธ๊ฐ๋ฅผ ๋ฐฐ์ธ ๋๋, ๊ทธ๊ฒ์ด ์ด๋์ ์๋์ง ํ์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
- GiangStepDEV
Why React?
์์ ํ ๋์ง ์ผ๋ง ์ ๋ ๋ฆฌ์กํธ, ์ ์ด๋ ๊ฒ ํซํ ๊น์?
๋ชจ๋ ๊ธฐ์ ํธ๋ ๋๋ ๊ทธ๊ฒ์ด ๋์ค๊ฒ ๋ ๋ฐฐ๊ฒฝ์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉด ์ ์ ์์ต๋๋ค.
ํ ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์น ๋ธ๋ผ์ฐ์ ์์ ๊ฐ๋จํ ์ฐ์ฐ์ ํ๊ฑฐ๋ ์๊ฐ์ ์ธ ํจ๊ณผ๋ฅผ ์ฃผ๋ ๋จ์ํ ์คํฌ๋ฆฝํธ ์ธ์ด์ ๋ถ๊ณผํ์ง๋ง ํ์ฌ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ์ฅ ํต์ฌ์ ์ธ ์ญํ ์ ํฉ๋๋ค. ๋ ๋์๊ฐ ์์ญ์ ํ์ฅํ์ฌ ์๋ฒ์ฌ์ด๋๋ ๋ฌผ๋ก ๋ชจ๋ฐ์ผ, ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์์ฒญ๋ ํ์ฝ์ ํ๊ณ ์์ต๋๋ค.
๋ณต์กํ๊ณ ๊ฑฐ๋ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํด์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ง์ผ๋ก ๊ด๋ฆฌํ๊ธฐ์๋ ๋ณต์ก๋๊ฐ ๋งค์ฐ ์ฆ๊ฐํฉ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ง์ ํ๋ ์์ํฌ๊ฐ ๋ฑ์ฅํ์์ผ๋ฉฐ, ์ด ํ๋ ์์ํฌ๋ค์ ์ฃผ๋ก MVC์ MVVM ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
JSON ๊ฐ์ฒด ๊ฐ์ ์ฌ์ฉํด ๋ทฐ๋ฅผ ๊ฐฑ์ ํ๋ ๊ฒฝ์ฐ, ์์๋ฅผ ์ฐพ์ ์ ๋ฐ์ดํธ๋ฅผ ํ๋๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ท๋ชจ๊ฐ ์ปค์ง ์๋ก ์๋นํ ๋ณต์กํด์ง๊ณ ์ฑ๋ฅ๋ ๋จ์ด์ง๊ฒ ๋ฉ๋๋ค.
์ด ๋ ํ์ด์ค๋ถ ๊ฐ๋ฐํ์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ๋์ ์์ด๋์ด๋ฅผ ๊ณ ์ํด ๋๋๋ฐ์!
"์ด๋ค ๋ฐ์ดํฐ๊ฐ ๋ณํ ๋๋ง๋ค ์ด๋ค ๋ณํ๋ฅผ ์ค์ง ๊ณ ๋ฏผํ๋ ๊ฒ์ด ์๋๋ผ
๊ธฐ์กด ๋ทฐ๋ฅผ ๋ ๋ฆฌ๊ณ ์ฒ์๋ถํฐ ์๋กญ๊ฒ ๋ ๋๋ง์ ํ๋ฉด ์ด๋จ๊น?"
์ด๋ ๊ฒ ํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์กฐ๊ฐ ๋งค์ฐ ๊ฐ๋จํด์ง๊ณ , ์ฝ๋ ์๋ ํ์ฐํ ์ค์ด๋ค๊ฒ ๋ฉ๋๋ค.
๋ ์ด์ ์ด๋ป๊ฒ ๋ณํ๋ฅผ ์ค์ง ์ ๊ฒฝ ์ธ ํ์๊ฐ ์๊ณ , ๊ทธ์ ๋ทฐ๊ฐ ์ด๋ป๊ฒ ์๊ธธ์ง ์ ์ธํ๋ฉฐ, ๋ฐ์ดํฐ์ ๋ณํ๊ฐ ์์ผ๋ฉด ๊ธฐ์กด์ ์๋ ๊ฒ์ ๋ฒ๋ฆฌ๊ณ ์ ํด์ง ๊ท์น์ ๋ค๋ผ ์๋ก ๋ ๋๋ง ํฉ๋๋ค.
์ฅ/๋จ์
- ๋ฆฌ์กํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค.
๋ฐ๋ผ์, ์ค์ง View๋ง ์ ๊ฒฝ ์ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋๋ค. - ๋ฆฌ์กํธ ํ๋ก์ ํธ์์ ํน์ ๋ถ๋ถ์ด ์ด๋ป๊ฒ ์๊ธธ์ง ์ ํ๋ ์ ์ธ์ฒด๊ฐ ์๋๋ฐ, ์ด๋ฅผ ์ปดํฌ๋ํธ๋ผ๊ณ ํฉ๋๋ค.
- ์ปดํฌ๋ํธ๋ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ API๋ก ์๋ง์ ๊ธฐ๋ฅ๋ค์ด ๋ด์ฅํ๊ณ ์์ผ๋ฉฐ, ์ปดํฌ๋ํธ ํ๋์์ ํด๋น ์ปดํฌ๋ํธ์ ์๊น์์ ์๋ ๋ฐฉ์์ ์ ์ ํฉ๋๋ค.
์ฅ์
- ๊ฐ์ DOM(Virtual DOM) ๊ธฐ๋ฐ์ผ๋ก UI๋ฅผ ๋น ๋ฅด๊ฒ ์ ๋ฐ์ดํธ ํ ์ ์์ต๋๋ค.
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ก ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง๋๋ค.
- ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์กฐํ์ฌ ์์ธก ๊ฐ๋ฅํ ์ํ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- JSX(JavaScript XML) ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ์ HTML์ ์ฝ๊ฒ ์กฐํฉํ ์ ์์ต๋๋ค.
- ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ์ ์ฝ๊ฒ ์ฐ๋์ด ๊ฐ๋ฅํฉ๋๋ค.
๋จ์
- ์ด๊ธฐ ํ์ต์ด ์ด๋ ค์
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ก ๊ฐ๋ฐ์, ๊ตฌ์กฐ ์ค๊ณ์ ์๊ฐ์ด ๋ง์ด ์์ ๋จ
- ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, ์ํ ๊ด๋ฆฌ ๋ณต์กํด์ง ์ ์์
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์ ํ์ํ ๋ค๋ฅธ ๊ธฐ๋ฅ(๋ผ์ฐํ , ์ํ ๊ด๋ฆฌ ๋ฑ)์ ์ถ๊ฐ๋ก ๊ตฌํํด์ผ ํจ
์ด๊ธฐ ๋ ๋๋ง
์ด๋ค UI ๊ด๋ จ ํ๋ ์์ํฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์ง ๋งจ ์ฒ์ ์ด๋ป๊ฒ ๋ณด์ผ์ง ์ ํ๋ ์ด๊ธฐ ๋ ๋๋ง์ด ํ์ํฉ๋๋ค.
๋ฆฌ์กํธ์์๋ ์ด๋ฅผ ์ํด render()
ํจ์๊ฐ ์์ต๋๋ค.
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
Virtual DOM
๋ฆฌ์กํธ์ ์ฃผ์ ํน์ง ์ค ํ๋๋ Virtual DOM์ ์ฌ์ฉํ๋ ๊ฒ ์ ๋๋ค.
Virtual DOM์ ์ฌ์ฉํ๋ฉด ์ค์ DOM์ ์ ๊ทผํ์ฌ ์กฐ์ํ๋ ๋์ , ์ด๋ฅผ ์ถ์ํํ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ์ฌ ์ฌ์ฉํฉ๋๋ค.
๋ฆฌ์กํธ์์ ๋ฐ์ดํฐ๊ฐ ๋ณํ์ฌ ์น ๋ธ๋ผ์ฐ์ ์ ์ค์ DOM์ ์ ๋ฐ์ดํธ ํ ๋๋ ๋ค์ ์ธ ๊ฐ์ง ์ ์ฐจ๋ฅผ ๋ฐ์ต๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ์ ์ฒด UI๋ฅผ Virtual DOM์ ๋ฆฌ๋ ๋๋ง ํฉ๋๋ค.
- ์ด์ Virtual DOM์ ์๋ ๋ด์ฉ๊ณผ ํ์ฌ ๋ด์ฉ์ ๋น๊ตํฉ๋๋ค.
- ๋ฐ๋ ๋ถ๋ถ๋ง ์ค์ DOM์ ์ ์ฉํฉ๋๋ค.
์์ ํ๊ฒฝ ์ค์
Node.js
๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ๋๋ Node.js๋ฅผ ๋ฐ๋์ ์ค์นํด์ผ ํฉ๋๋ค.
$ brew install node
$ node -v
yarn
yarn์ npm์ ๋์ฒดํ ์ ์๋ ๋๊ตฌ๋ก npm ๋ณด๋ค ๋ ๋น ๋ฅด๋ฉฐ ํจ์จ์ ์ธ ์บ์ ์์คํ ๊ณผ ๊ธฐํ ๋ถ๊ฐ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
$ sudo npm install -global yarn
$ yarn -version
VSCode ํ๋ฌ๊ทธ์ธ
- ESLint
- Reactjs Code Snippets
- Prettier-Code formatter
create-react-app์ผ๋ก ํ๋ก์ ํธ ์์ฑ
$ yarn create react-app ํ๋ก์ ํธ๋ช
ํ๋ก์ ํธ ์คํ
$ cd ํ๋ก์ ํธ๋ช
$ yarn start
'๐จ Frontend > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ฎ React - 6. Ref์ DOM (0) | 2023.04.13 |
---|---|
๐ฎ React - 5. ์ด๋ฒคํธ ํธ๋ค๋ง (0) | 2023.04.12 |
๐ฎ React - 4. ํจ์ ์ปดํฌ๋ํธ์์ useState ์ฌ์ฉํ๊ธฐ (2) | 2023.04.11 |
๐ฎ React - 3. ์ปดํฌ๋ํธ(Component) (0) | 2023.04.11 |
๐ฎ React - 2. JSX(JavaScript XML) (0) | 2023.04.10 |