์๋ ํ์ธ์, FE ์ฝ์ด๋ฉค๋ฒ ํ๊ท์ง์ ๋๋ค.
์ค๋์ GDSC์์ ์งํํ๋ ์ฒซ๋ฒ์งธ ๋๋ฉด ์คํฐ๋์ ๋๋ค!! ๋ฆฌ์กํธ๋ฅผ ์ฒ์ ์์ํด ๋ด ์๋ค.
๋ฆฌ์กํธ ์์ํ๊ธฐ
๋ฆฌ์กํธ๋ฅผ ํ๋ฒ๋ ์์จ๋ณด์ ๋ถ์ ์๋๊ฑธ๋ก ์๊ณ ์์ผ๋, ๊ตณ์ด ์์ธํ ์ ์ด๋์ง ์์๋ ๋๊ฒ ์ฃ . ์์ธํ๊ฑด ๋ค๋ฅธ ๋ธ๋ก๊ทธ๋ ์ฑ ์ ๋์์์ผ๋ ๋ณด์๋ฉด ๋๊ฒ ์ต๋๋ค.
๊ฐ๋จํ๊ฒ๋ ์ด๋ ์ต๋๋ค. Mac ๊ธฐ์ค์ผ๋ก ์์ฑํฉ๋๋ค.
1. Homebrew ์ค์น
/usr/bin/ruby -e "$(curl -fsSL <https://raw.githubusercontent.com/Homebrew/install/master/install>)"
2. node, npm ์ค์น
brew update
brew install node
node๋ฅผ ์ค์นํ๋ฉด npm๋ ํจ๊ป ์ค์น๋ฉ๋๋ค. ๋์ค์ ๋ค์ ์์ธํ ์ดํด๋ณผ๊ฒ์.
node -v
npm -v
์ ๋๋ก ์ค์น๋์๋์ง ๋ฒ์ ์ ํ์ธํด๋ด ์๋ค.
brew install yarn --ignore-dependencies
์ ๋ npm๋ณด๋ค yarn์ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค. npm๊ณผ ๋น์ทํ ํจํค์ง ๋งค๋์ ์ ๋๋ค. ์ฌ์ค ๋ณ๋ก ๋ค๋ฅธ ๊ฑด ์์ต๋๋ค.
3. ํ๋ก์ ํธ ์์ฑ
ํฐ๋ฏธ๋์์ yarn create react-app [projectName]
์ผ๋ก ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ ํ๊ฒฝ์์ ์คํํด๋ณผ๋ yarn start
(๋๋ npm run start
)๋ก ์คํํฉ๋๋ค.
week2
โโโ node_modules
โโโ public
โ โโโ favicon.ico
โ โโโ index.html
โ โโโ manifest.json
โโโ src
โ โโโ App.css
โ โโโ App.js
โ โโโ App.test.js
โ โโโ index.css
โ โโโ index.js
โ โโโ logo.svg
โ โโโ reportWebVitals.js
โโโ .gitignore
โโโ package.json
โโโ README.md
โโโ yarn.lock
์ด๋ฐ ๊ตฌ์กฐ์ ํ์ผ๋ค์ด ์์ฑ๋ฉ๋๋ค. ๋ฌด์ธ๊ฐ ์ข ๋ง์ต๋๋ค. ์๋ html css js๋ก๋ง ์นํ์ด์ง๋ฅผ ๋ง๋ค์์๋๋ ํ์ผ ๋์ธ๊ฐ๋ก๋ ์ถฉ๋ถํ ์นํ์ด์ง๋ฅผ ๋ง๋ค ์ ์์๋๋ฐ ๋ง์ด์ฃ .
๋ณ๋ก ๋ถ๋ด์ ๋๋๊ฑด ์๋๊ฒ์ด, ์์ฒ๋ผ ๋ณต์กํ ํ์ผ๋ค์ ์น์ ๋์ฐ๊ธฐ ์ํด ๋น๋๋ฅผ ํด๋ณด๋ฉด ์๋ ์๋๊ฒ๊ณผ ๋น์ทํ ํํ๋ก ๋์ฌ๊ฒ๋๋ค.
yarn build
๋ช
๋ น์ด๋ก ํ๋ก์ ํธ ๋น๋๋ฅผ ํด๋ณด์์ต๋๋ค. Build ๋ผ๋ ๋๋ ํ ๋ฆฌ๊ฐ ์๋ก ์๊ธด๊ฑธ ํ์ธํ ์ ์์ต๋๋ค. ํด๋น ๋๋ ํ ๋ฆฌ ๋ด์๋ css, js, html ๋ฑ ์ ์ ์ธ ํ์ผ์ด ๋ค์ด์์ต๋๋ค.
์น์ผ๋ก ๋ฐฐํฌ๋ฅผ ํ ๋๋ ๋น๋๋ ํ์ผ๋ค์ ์น์๋ฒ๋ฅผ ์ด์ฉํด ๋ฐฐํฌ๋ฅผ ํ๋ฉด ๋๊ฒ ์ฃ ?? ๊ฐ๋จํ๊ฒ ์ด๋ ๊ฒ๋ ํ ์ ์์ต๋๋ค. ๋น๋๋ ํ์ผ๋ก ๊นํ๋ธ ํ์ด์ง๋ฅผ ํตํด ๋ฐฐํฌ๋ฅผ ํ ๋ ํฌ์งํ ๋ฆฌ์ ๋๋ค.
๋ง๋ค์ด์ง jsํ์ผ์ ํ๋ ๋ค์ฌ๋ค๋ณด๋ฉด ์์ ์ฌ์ง์ฒ๋ผ ์ด์ง๋ฌ์ด๊ฒ ๋ง ๋ํ๋ฉ๋๋ค. ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด, ์ฐ๋ฆฌ๊ฐ ์์ฑํ ์ฌ๋ฌ ์ฝ๋์ ํ์ผ๋ค์ด ์์๊ฐ์ด ํฉ์ณ์ ์๋ก์ด ํ์ผ์ ์์ฑํฉ๋๋ค.
๊ทธ๋ฐ๊ฑด ๋๊ฐํ ๊น์?? webpack๊ณผ babel์ด๋ผ๋ ์ด๋์ ๋ง์ด ๋ค์ด๋ณธ ํค์๋๊ฐ ์ฌ๊ธฐ์ ๋ฑ์ฅํฉ๋๋ค.
SPA(single page app)์์ webpack์ ์ฌ์ฉํ๋ ์ด์
webpack์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ํ์ ๋ฒ๋ค๋ง, ํซ ๋ก๋ฉ ๋ฑ์ ์ํด ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๋ฆฌ์กํธ์์ ์ฃผ๋ก ์ฌ์ฉํ๋ ES6 ๋ฑ ์ต์ ๋ฌธ๋ฒ์ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ๋ฌธ๋ฒ์ผ๋ก ๋ณํํด์ฃผ๋ babel๋ ๊ฐ์ด ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
ํ์ง๋ง ์ ํฌ๋ ์์ง ์ ๋ฐ๊ฑธ ๋ณธ์ ์ด ์์ต๋๋ค. ์ง๊ธ ๋น์ฅ์ ์ ํ์๊ฐ ์์ต๋๋ค. ์๋๋ฉด create react-app
์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธํ
์ด ๋์ด ์๊ฑฐ๋ ์. ์ ๊ถ๊ธํ์๋ฉด yarn eject
๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด๋ณด์ธ์. (ํ๋ฒ ๊บผ๋ด๋ฉด ๋ค์ ๋๋๋ฆด ์ ์๋ค๋ ๊ฒ์ ์๋ฉ ์ฃผ๋ฉฐ) ๋ด์ฅ๋์ด ์๋ webpack.config
๋ฅผ ๊บผ๋ด๋ณผ ์ ์์ต๋๋ค.
config
๋ผ๋ ํด๋๊ฐ ์๊ฒผ๊ณ , ๊ทธ ์์๋ ์นํฉ ๊ด๋ จ ์ค์ ์ด ๋ค์ด ์๋ค์. ์ ๋ ๋ด๋ ์ ๋ชจ๋ฆ
๋๋ค. ์กฐ๋ง๊ฐ ๊ณต๋ถ๋ฅผ ํ๋ฒ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
package.json
์ ๋ด์ฉ๋ ๊ฝค ๋ง์ด ๋ฐ๋์์ต๋๋ค. ๋ฐ๋ฒจ๊ณผ ์นํฉ ๊ด๋ จ๋ ํจํค์ง๋ค์ด ์ฌ๋ฌ ์ค์น๋์ด ์์ต๋๋ค. ์ ๋ฌด์๋ฌด์ํ ๊ณผ์ ์ create react-app
๋ช
๋ น์ด๋ฅผ ํตํด ์๋์ผ๋ก ์ธํ
ํ ์ ์์ต๋๋ค. ๊ณ ๋ง์!! ํ๊ณ ๊ฐ๋ฐ ์์ํ์๋ฉด ๋ฉ๋๋ค.
๊ณผ์
1. ํฌ๋๋ฆฌ์คํธ ๋ง๋ค๊ธฐ
์ฒซ๋ฒ์งธ ๊ณผ์ ๋ ๋ฌด์ฒ ๊ฐ๋จํฉ๋๋ค. ๋จผ์ Figma๋ฅผ ํตํด์ ์ฌ๋ฌ๋ถ์ด ํํํ๊ณ ์ ํ๋ ๊ฒ์ ์๊ฐ์ ์ผ๋ก ๋ง๋ค์ด๋ด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ React๋ฅผ ์ด์ฉํด ๊ตฌํํด๋ด ์๋ค.
๋ฆฌ์กํธ๋ฅผ ํ์ จ๋ ๋ถ์ด๋ผ๋ฉด, ์กฐ๊ธ ๋ ํจ์จ์ ์ธ ํจํด์ ๋ํด์ ๊ณ ๋ฏผ์ ํ ์ ์๋ ์๊ฐ์ด ๋ ๊ฒ์ด๊ณ , ๋ฆฌ์กํธ๊ฐ ์ฒ์์ด๋ผ๋ฉด ๊ณผ์ ๋ฅผ ํ๋ฉฐ ๋ฆฌ์กํธ์ ์ฅ์ ์ ๋ํด ๋๋ผ์ค ์ ์์๊ฑฐ์์.
2. WIL
์ผ์ฃผ์ผ ๋์ ๊ณผ์ ๋ฅผ ํ๋ฉฐ ํ์ตํ ๋ด์ฉ, ๊ณ ๋ฏผํ๋ ๋ถ๋ถ ๋ฑ์ ๊ธ๋ก ์ ๋ฆฌํด์ ์ ํฌ์ ๊ณต์ ํด์ฃผ์ธ์.
1. ๋ฆฌ์กํธ๋ฅผ ์ฒ์ ์์ํ ๋ node์ npm์ด๋ผ๋๊ฑธ ์ค์นํด๋ณด์์ต๋๋ค. node์ npm์ ๋ฌด์์ด๊ณ ์ ๋ฆฌ์กํธ์์ ์ฐ์ด๋๊ฑธ๊น์?
2. ์ปดํฌ๋ํธ, props, state๋ ๋ฌด์์ผ๊น์?
3. ๋ฐ๋๋ผJS์ ๋ฆฌ์กํธ์์ DOM์ ๋ค๋ฃจ๋ ๋ฐฉ์์ ๋ํด์ ์ด๋ค ์ ์ด ๋ค๋ฅผ๊น์??
4. ์ด ์ธ์๋ ์ ํฌ์ ํจ๊ป ๊ธฐ๋กํ๊ณ ๊ณต์ ํ๊ณ ์ถ์ ๋ด์ฉ์ด ์๋ค๋ฉด ์ผ๋ง๋ ์ง ์ข์์.