1. React is Javascript UI Library
- ์น ์ฑ์ app์ฒ๋ผ ๋ง๋ค์ด ๋์ ์น ํ์ด์ง๋ฅผ ๋งํ๋ค.
- ๋ชจ๋ฐ์ผ์ฑ์ผ๋ก ๋ฐํ์ด ์ฉ์ดํ๋ฉฐ, ๋ฐ์ด๋ UX๋ฅผ ์๋ํ๋ค. (๋ฒ๋ฒ ๊ฑฐ๋ฆผ์ด ์๊ณ ๋ฐ์์๋ ๋น ๋ฆ)
- ์ด๋ ๋น์ฆ๋์ค์ ๊ฐ์ , ๊ตฌ๋งค์ ํ์จ์ด ๋์์ง๋ ํจ๊ณผ๋ฅผ ๋ถ๋ฌ์ผ์ผํจ๋ค.
- ์ปดํฌ๋ํธ๋ฅผ ์กฐํฉํ์ฌ ํ์ด์ง๋ฅผ ๊ตฌ์ถํ๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์๊ฐ ํธ๋ฆฌํด์ง๋ค.
2. ๊ธฐ์ ์ ์ธ ์ธ ๊ฐ์ง ์ด์ โโ
1. ๐: JS์ธ์ด์ธ๋ฐ ํจ์ ์์ HTML์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.(JSX)
2. ๐: ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ์ด ์์ํ๋ค.
3. ๐: bolierplate(code)๊ณผ์ ์ด ์๋ต๋๋ค.
=> ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ ๋ง๋ค ์จ์ค์ผ ํ๋ ์ฅํฉํ ์ฝ๋์ ์ ํ ์ด ์ค์ด, ํ๋ก์ ํธ ์์์ด ๋น ๋ฅด๋ค.
4. ๐: ์ปดํฌ๋ํธ๋ณ๋ก ์ฝ๋๋ฅผ ๋๋ ์ ์๋ค. ์ฌ์ฉ์ ์ ์ ํ๊ทธ๋ฅผ ๋ง๋ค์ด ๋ฐฉ๋ํ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํํํ ์ ์๋ค.
3. CRA
๋ฐฉ๋ํ ์ํ๊ณ
React์ ํน์ง์ ๊ฐ๋ฐ์ ํ์ํ ๋ชจ๋์ ๋ชจ๋ ๊ฒ์ ์ ๊ณตํ์ง ์๊ณ , ์๋ํํฐ(Third party) ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๋ค. ๋ค๋ฅธ ํ๋ ์์ํฌ์ ๋นํด ๋ฐฉ๋ํ ์ํ๊ณ๊ฐ ์กด์ฌํ๋ค. ์ฌ์ฉ์๋ ์์ ๋กญ๊ฒ ๊ฐ๋ฐ์ ํ์ํ ๋ชจ๋์ ๊ฒฐ์ ํ๊ณ ์ ํํ ์ ์๋ค๋ ํน์ง์ด ์๋ค. ์ปค๋ค๋ ์์ฝ ์์คํ ์ React์ ์ฅ์ ์ผ๋ก ๋ณด์ด์ง๋ง ์ฌ์ฉ์์๊ฒ ์ฑ ์์ด๋ผ๋ ๋ถ๋ด์ ์ง์ฐ๊ธฐ๋ ํ๋ค. ๋ฐ๋ผ์ Angular CLI์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด์ฌ์์ ๋น ๋ฅธ ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ์ ์ํด์, Create React App์ด๋ผ๋ ํด์ฒด์ธ์ ์ ๊ณตํ์ฌ ์ง์ ์ฅ๋ฒฝ์ ๋ฎ์ถ๊ณ ์๋ค. ๊ฑฐ๋ํ ์ํ๊ณ์ ์์์ ํ์ํ ์ํฉ์ ๋ง์ถฐ์ ์ฌ์ฉํ ์ ์๋ ์ ์ฐ์ฑ์ ํน์ง์ ๊ฐ๊ณ ์๋ ๋ฆฌ์ํธ๊ฐ ์๋์ ํ๋ฆ์ ๋ง์ถฐ ๊ฐ๋ฐํ๋ ์ธ์ด๋ก ์ ํฉํ๋ค๊ณ ํ๊ฐ๋๊ธฐ๋ ํ๋ค.
*ํด์ฒด์ธ: ๊ฐ๋ฐ ๋ชฉํ์ ๋ฐ๋ผ ํ์ํ ์ฌ๋ฌ๊ฐ์ง ๊ฐ๋ฐ ํ๊ฒฝ ๋ฐ ๋๊ตฌ๋ฅผ ๋ชจ์์ ํ ๋ฒ์ ์ ๊ณตํ๋ ๋๊ตฌ
*React์ ํด์ฒด์ธ: CRA, Nest.js, Gatsby ๋ฑ
Trans-compile
CRA๋ ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌ ์ ํด์ผ ํ๋ ๋ฒ๋ค๋ง๊ณผ Trans-compile ๋ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ค.
4. react ์ค์น
npm install -g create-react-app
create-react-app .
๋๋
npx create-react-app .
npx create-react-app ProjectNameHere
npx create-react-native ProjectNameHere
npx create-react-app --help
npx create-react-app --version
$ npm start
ํ์ผ&ํด๋ ์ค๋ช
- public/index.html: ์ค์ ๋ฉ์ธํ์ด์ง
- node_modules: ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ์ ํด๋
- public: static ํ์ผ ๋ณด๊ดํจ, ์์ถ๋์ง ์์
- src: ์์ค์ฝ๋ ๋ณด๊ดํจ
- package.json: ์ค์นํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชฉ๋ก
5. create react app ์ค๋ฅ
"npmERR! cb.apply is not a function"
node๋ฅผ ์๋กญ๊ฒ ์ค์นํ ํ, npm install ๋ช ๋ น์ด๋ฅผ ๋ ๋ฆฌ๋ ์๊ฐ ์๋ฌ๊ฐ ๋ฐ์ํ์๋ค.
$ npm install
npm WARN npm npm does not support Node.js v14.15.4
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 6, 8, 9, 10, 11, 12.
npm WARN npm You can find the latest version at https://nodejs.org/
npm ERR! cb.apply is not a function
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\minkyu\AppData\Roaming\npm-cache\_logs\2021-01-21T14_36_29_321Z-debug.log
ํด๊ฒฐ๋ฒ
1. C:\Users\NAME\AppData\Roaming ๋๋ ํ ๋ฆฌ๋ก ์ด๋ ํ npm ๋๋ ํ ๋ฆฌ์ npm-cache ๋๋ ํ ๋ฆฌ๋ฅผ ์ญ์ ํด์ค๋ค.
2. npm cache clean --force ๋ช ๋ น์ด๋ก cache๋ฅผ ์ญ์ ํด์ค๋ค.
* ์คํ ๋ง ์ฃผ์: import React from "React"; => import React from "react";
6. (์ถ๊ฐ) ๋ฐ๋๋ผ vs ๋ฆฌ์กํธ
๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ๋ณด๋ค ์ฑ๋ฅ์ด ํจ์ฌ ๋ ๋น ๋ฅด๋ค. ๋จ, ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑํ๋ค๋ ๊ฒ์ ์ ์ ๋ก ํ๋ค. ๊ท๋ชจ๊ฐ ๊ฑฐ๋ํ ํ๋ก์ ํธ์์๋ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ ์ง๊ณ , ๋ฐฉ๋ํ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์, ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ชจ๋ ์ฝ๋๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑํ๊ธฐ ํ๋ค๋ค. ๋ฐ๋ผ์ ํ๋ ์์ํฌ๋ก ์์ฑํ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ต๋ ๋ช๋ฐฑ ms ์ฐจ์ด๋ก ์ฑ๋ฅ ์ฐจ์ด๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ๊ฒฝํ์ ํฐ ์ฐจ์ด๊ฐ ์๋ค. ๋ํ Server-side-rendering, caching, lazy-loading & compression๋ฑ์ ๊ธฐ์ ์ ์คํ๋ ค ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ๋ฅ์ ์ต๋ํ ํ์ฉํ๊ธฐ ๋๋ฌธ์, ์ค๋ ์๊ฐ์ ๊ฑธ์ณ ์ฌ์ธํ๊ฒ ์์ฑํ ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ ์๋๋ผ๋ฉด, ์คํ๋ ค ๋ฆฌ์กํธ๋ก ์์ฑํ ์ฝ๋๊ฐ ํผํฌ๋จผ์ค๊ฐ ๋ ๋ฐ์ด๋๋ค. ํ์ง๋ง ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฅ์ํ ์์ฑํ ์ค ์๋ค๋ฉด, ๊ท๋ชจ๊ฐ ์์ ํ๋ก์ ํธ์๋ ๊ตณ์ด ๋ฆฌ์กํธ๋ฅผ ๊ณ ์งํด์ ์ธ ํ์๋ ์๋ค.
'๐ Front > โ๏ธ React JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React Hook ์๋ฆฌ์ฆ 3]: 10๊ฐ์ง Hook๋ค (useMemo, useRef ๋ฑ) (0) | 2021.08.03 |
---|---|
[React Hook ์๋ฆฌ์ฆ 2]: useEffect() (0) | 2021.07.22 |
[React Hook ์๋ฆฌ์ฆ 1]: ์ฐ๋ ์ด์ , useState() (0) | 2021.07.20 |
[React Router] ๋ผ์ฐํฐ ์ฌ์ฉํ๊ธฐ(react-router-dom v5) (0) | 2021.07.20 |
[๋ฆฌ์กํธ ์ผ๋์ฅ]: Component, State, Props (0) | 2021.02.02 |