[week_08] React ๊ธฐ์ดˆ โ… (4) React ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
elice/WIL

[week_08] React ๊ธฐ์ดˆ โ… (4) React ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

1. Create React App (CRA)

  • React ํ”„๋กœ์ ํŠธ๋ฅผ ์†์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ(Boilerplate)
  • Facebook์—์„œ ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์— ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค์„ Command๋กœ ์ œ๊ณตํ•œ๋‹ค.

1-1. Create React App (CRA)์˜ ์žฅ์ 

1) ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜จ์ „ํžˆ React App ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

  • ์ƒ๋Œ€์ ์œผ๋กœ ๋œ ์ค‘์š”ํ•œ ์ฝ”๋“œ๋Š” ๋…ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ฐ•๋ ฅํ•œ Command๋ฅผ ์ง€์›ํ•œ๋‹ค.

2) (๋Œ€๋ถ€๋ถ„์˜) ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•ด์„๋  ์ˆ˜ ์žˆ๋„๋ก transcompile ์ง€์›

  • Babel ๊ธฐ๋ณธ ๋‚ด์žฅ
  • ๋ฐฐํฌ ์‹œ ์ฝ”๋“œ ๋ฒˆ๋“ค๋ง
  • Webpack ๊ธฐ๋ณธ ๋‚ด์žฅ

 

2. Node.js / NPM ์†Œ๊ฐœ

  • Create React App์œผ๋กœ React ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์‹œ Node.js ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค.
  • Node.js : Create React App์œผ๋กœ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋ฐ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๋กœ ์ด์šฉ๋œ๋‹ค.
  • NPM : Node.js ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ข… ํŒจํ‚ค์ง€๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ์ €์žฅ์†Œ, React์™€ ๊ด€๋ จ๋œ ๋ชจ๋“ˆ๋“ค์ด NPM์—์„œ ๋ฐฐํฌ๋˜๊ณ  ์žˆ๋‹ค.

 

3. React ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•ด๋ณด๊ธฐ

npx create-react-app <๋””๋ ‰ํ† ๋ฆฌ๋ช…>
cd <๋””๋ ‰ํ† ๋ฆฌ๋ช…>
npm start
  • npx : npm ํŒจํ‚ค์ง€๋ฅผ 1ํšŒ์„ฑ์œผ๋กœ ๋‚ด๋ ค ๋ฐ›์•„ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด

3-1. ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ์‚ดํŽด๋ณด๊ธฐ

1) ./node_modules/ : npm์„ ์ด์šฉํ•ด ์„ค์น˜ํ•œ ํŒจํ‚ค์ง€๋“ค ๋ชจ์Œ

2) ./public/ : ์ •์ ์ธ ํŒŒ์ผ๋“ค์„ ๋ชจ์•„ ๋†“๋Š” ๊ณณ

3) ./src/ : ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํŒŒ์ผ๋“ค์„ ๋ชจ์•„ ๋†“๋Š” ๊ณณ

  • public์˜ index.html์ด ์ตœ์ดˆ ์‹คํ–‰๋œ ํ›„ src์˜ index.js๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

4) ./.gitignore : Git์„ ์ด์šฉํ•  ๊ฒฝ์šฐ ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ์„ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์„ค์ •ํŒŒ์ผ

5) ./package.json : ํ”„๋กœ์ ํŠธ์— ๊ด€ํ•œ ์ •๋ณด์™€ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ค์ง€๋“ค์„ ๋ช…์„ธํ•˜๋Š” ํŒŒ์ผ

6) ./README.md : ๋‚ด ํ”„๋กœ์ ํŠธ์— ๊ด€ํ•œ ์„ค๋ช…์„ ์ž‘์„ฑํ•˜๋Š” ํŒŒ์ผ

 

4. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜์™€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

npm install
npm install <ํŒจํ‚ค์ง€๋ช…>

npm install <ํŒจํ‚ค์ง€๋ช…>@<version>
npm install <Git ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ฃผ์†Œ>

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ํ›„ package.json์— ์„ค์น˜ํ•œ ๋ชจ๋“ˆ๋“ค์ด ์ž๋™์œผ๋กœ ์ •๋ฆฌ๋œ๋‹ค. package.json์˜ dependencies(์˜์กด์„ฑ)๋ผ๋Š” ํ‚ค ์•„๋ž˜์— ์„ค์น˜ํ•œ ํŒจํ‚ค์ง€ ๋ชฉ๋ก์ด ๋‚˜์—ด๋œ๋‹ค.

ํŒจํ‚ค์ง€ ๋ฒ„์ „๋ช…์—๋Š” ^(์บ๋Ÿฟ), <, <=, >, >= ๋“ฑ์˜ ๊ธฐํ˜ธ๋ฅผ ์ด์šฉํ•ด ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์„ค์น˜ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” import๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

import "ํŒจํ‚ค์ง€๋ช…"

import something from "ํŒจํ‚ค์ง€๋ช…"

import { a, b } from "ํŒจํ‚ค์ง€๋ช…"

import * as something from "ํŒจํ‚ค์ง€๋ช…"

1) import "ํŒจํ‚ค์ง€๋ช…"

  • CSS ํ˜น์€ import ํ•˜๋Š” ๊ฒƒ ๋งŒ์œผ๋กœ๋„ ์—ญํ• ์„ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ ๊ฒฝ์šฐ
  • JS ํŒŒ์ผ์˜ ๊ฒฝ์šฐ์—๋Š” ํ™•์žฅ์ž๋ฅผ ์ƒ๋žต ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๊ทธ ์™ธ์˜ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ์—๋Š” ํ™•์žฅ์ž๋ฅผ ์ž‘์„ฑํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • ex) import "./App.css"

2) import something from "ํŒจํ‚ค์ง€๋ช…"

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๋ถˆ๋Ÿฌ์™€ ํ™œ์šฉํ•  ๋•Œ์—๋Š” ํ• ๋‹นํ•  ์ด๋ฆ„์„ ์ž‘์„ฑํ•œ๋‹ค.

3) import { a, b } from "ํŒจํ‚ค์ง€๋ช…"

  • ํŒจํ‚ค์ง€ ๋‚ด์˜ ์ผ๋ถ€ ๋ฉ”์†Œ๋“œ๋‚˜ ๋ณ€์ˆ˜๋งŒ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” ๊ตฌ์กฐ๋ถ„ํ•ด๋ฅผ ํ•˜์—ฌ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋‹ค.

4) import * as something from "ํŒจํ‚ค์ง€๋ช…"

  • ํŒจํ‚ค์ง€์— default๋กœ export ๋˜๋Š” ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ * as ์ด๋ฆ„