• [React] ๋งฅ(M2ํ™˜๊ฒฝ)์—์„œ React ํ™˜๊ฒฝ ์„ธํŒ…ํ•˜๊ธฐ & ํ”„๋กœ์ ํŠธ ์‹คํ–‰

    2024. 6. 8.

    by. @leeeun

     

     

    ์š”์ฆ˜ ์ƒˆ๋กœ์šด ๊ฑฐ ๊น” ์ผ์ด ๋งŽ๋„ค์šค....

    ์บก์Šคํ†ค ๋””์ž์ธ์—์„œ ํ”„๋ก ํŠธ 0.2์ธ๋ถ„(?) ์„ ๋งก๊ฒŒ ๋˜์–ด์„œ ์ด๋ฒˆ์—” ๋งฅ์—์„œ React ์ž‘์—… ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค

    ๋ฆฌ์•กํŠธ.. ์ฐ๋จนํ•ด๋ณธ๋‹ค ํ•ด๋ณธ๋‹ค ํ•˜๋ฉด์„œ ๊ฒฐ๊ตญ ์ด๋ ‡๊ฒŒ ๊น”์•„๋ณด๋„ค์—ฌ

     

    1. Node.JS ์„ค์น˜

     

    Node.JS๋ž€?

    ๋ง‰๊ฐ„์˜ ๊ฐœ๋… ์ •๋ฆฌ!

    Node.js๋Š” Chrome V8 JavaScript ์—”์ง„์œผ๋กœ ๋นŒ๋“œ๋œ JavaScript ๋Ÿฐํƒ€์ž„=ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค
    ์‰ฝ๊ฒŒ ๋งํ•ด์„œ JavaScript ์‹คํ–‰ํ™˜๊ฒฝ ! ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” html์„ ์กฐ์ž‘ํ•ด์„œ ์›นํŽ˜์ด์ง€๋ฅผ ๋‹ค์ด๋‚˜๋ฏนํ•˜๊ฒŒ ๋ฐ”๊ฟ”์ฃผ๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ, ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ๋งŒ ๋™์ž‘์„ ํ•ฉ๋‹ˆ๋‹ค
    ์ด๋Ÿฌํ•œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™˜๊ฒฝ์„ ๋งˆ๋ จํ•˜๋Š” ๊ฒƒ์ด Node.js์ž…๋‹ˆ๋‹ค

     

    ๋…ธ๋“œ๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ์˜คํ•ดํ•˜๊ธฐ ์‰ฌ์šด๋ฐ, ํ”„๋กœ๊ทธ๋žจ(ํ™˜๊ฒฝ)์ž…๋‹ˆ๋‹ค!

    ์–ด์จŒ๋“  ์ด๋Ÿฌํ•œ ์—ญํ• ์„ ํ•˜๋Š” Node.js๋ฅผ ์„ค์น˜ํ•ด๋ด…์‹œ๋‹ค

     

    node.js ์„ค์น˜ ์—ฌ๋ถ€ ํ™•์ธ



    Mac ํ„ฐ๋ฏธ๋„์—์„œ node -v ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด ๊น”๋ ค์žˆ์ง€ ์•Š์•˜์„ ๋•Œ์—๋Š”

    Command not found: node ๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋œน๋‹ˆ๋‹น 

    ์ €๋Š” ๋”ฐ๋กœ ๊น”์•„์ค€ ์ ์ด ์—†๋Š”๋ฐ ๋‹ค๋ฅธ ๊ฑฐ ์„ค์น˜ํ•˜๋‹ค๊ฐ€ ๊ฐ™์ด ๊น”๋ ธ๋‚˜๋ณด๋„ค์š”..? ๋ฌดํŠผ ๊น”๋ ค์žˆ์œผ๋ฉด ๋ฒ„์ „์ด ๋œน๋‹ˆ๋‹ค

     

    Node.js ์„ค์น˜

     ์„ค์น˜ ๋งํฌ
    https://nodejs.org/en/

     

    LTS๋กœ ๋‹ค์šด๋กœ๋“œ!! ์ข€ ๋” ์•ˆ์ •์ ์ธ ๋ฒ„์ „์œผ๋กœ ๊น”์•„์ค๋‹ˆ๋‹ค

     

    ์ด๋ ‡๊ฒŒ .pkg ํŒŒ์ผ์ด ๋‹ค์šด๋กœ๋“œ ๋˜๋ฉด ๋”๋ธ”ํด๋ฆญํ•ด์„œ ์‹คํ–‰!

    ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ ์ญ‰ ์ง„ํ–‰ํ•ด์ฃผ์‹œ๋ฉด ๋จ๋‹ˆ๋‹ค

    ๊ทธ ํ›„ ์ œ๋Œ€๋กœ ๊น”๋ ธ๋Š”์ง€ ์•„๊นŒ์˜ ๋ช…๋ น์–ด

    node -v

     

    ์ž…๋ ฅํ•ด์„œ ํ™•์ธํ•ด๋ณด์„ธ์š”!

    ์ œ๋Œ€๋กœ ์„ค์น˜๋์œผ๋ฉด ๋ฒ„์ „์ด ๋œน๋‹ˆ๋‹ค

     

    2. NPM ์„ค์น˜ ํ™•์ธ

    NPM(Node Package Manager): Node.js์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ

     

    ํ„ฐ๋ฏธ๋„์— ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค

    npm -v

     

    Node js๋ฅผ ์„ค์น˜ํ•˜๋ฉด npm๋„ ์ž๋™์œผ๋กœ ๊ฐ™์ด ์„ค์น˜๊ฐ€ ๋ผ์„œ, ๋”ฐ๋กœ ๊น”์ง€ ์•Š์•„๋„ ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด ๋ฒ„์ „์ด ์ถœ๋ ฅ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค

     

    3. (์„ ํƒ) yarn ์„ค์น˜

     

    yarn์€ npm๊ณผ ๋™์ผํ•˜๊ฒŒ ๋…ธ๋“œ์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ด๋‚˜,

    npm์— ๋น„ํ•ด ํŒจํ‚ค์ง€ ์„ค์น˜ ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ๋ณด์•ˆ์ด ๋” ์•ˆ์ „ํ•˜๋‹ค๋Š” ๋“ฑ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    ์—ฌ๋Ÿฌ ๊ธ€๋“ค์„ ๋ณด๋‹ˆ yarn์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    ํ•˜์ง€๋งŒ ์ €๋Š” ์•ž์œผ๋กœ ์“ธ ์ผ์ด ๋งŽ์ด ์—†์„ ๊ฒƒ ๊ฐ™์•„ ๊ตณ์ด ์„ค์น˜ํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค..

     

    ์„ค์น˜ํ•˜๋ ค๋ฉด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ„ฐ๋ฏธ๋„์— ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค

    npm install --global yarn

     

    ํ˜น์€

    brew install yarn

     

    ์„ค์น˜ ํ™•์ธ

    yarn --version

     

     

    4. React ์„ค์น˜

    ์ด์ œ ์ฐ์œผ๋กœ ๋ฆฌ์•กํŠธ๋ฅผ ์„ค์น˜ํ•ด๋ด…์‹œ๋‹ค

    npm install -g create-react-app

     

    yarn์„ ๊น”์•˜๋‹ค๋ฉด

    yarn global add create-react-app

     

    create-react-app(CRA)๋ž€?
    ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์„ ๋ฐ”๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ , ์„ค์ •๋“ฑ์„ ์ž๋™์œผ๋กœ ์„ธํŒ…ํ•ด์ฃผ๋Š” ๋„๊ตฌ

     

    ์–ด๋ผ? ์„ค์น˜๊ฐ€ ๋˜๊ธฐ๋Š” ํ–ˆ์ง€๋งŒ  ํŠน์ • ํŒจํ‚ค์ง€๋“ค์ด ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š๊ฑฐ๋‚˜, ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ๋–ด๋„ค์š”

    ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰์— ํฐ ๋ฌธ์ œ๊ฐ€ ์—†์„๊ฑฐ ๊ฐ™์•„์„œ ์ผ๋‹จ์€ ๋„˜์–ด๊ฐ‘์‹œ๋‹ค

     

    ์„ค์น˜ ํ™•์ธ

    create-react-app -V

    ๋Œ€๋ฌธ์ž v์ธ๊ฑฐ ์ฃผ์˜ํ•˜์‹ญ์‡ผ

     

    5. ์ฝ”๋”ฉ ํˆด ์„ค์น˜ (VSCode)

    ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•  ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค

     

    6. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ & ์‹คํ–‰

     

    ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

     

    cd "ํŒŒ์ผ๊ฒฝ๋กœ"๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•ด์„œ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค

    npx create-react-app ํ”„๋กœ์ ํŠธ๋ช…

     

    ์ž…๋ ฅํ•˜๋ฉด ์ง€์ •ํ•œ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์œผ๋กœ ํด๋”๊ฐ€ ์ƒ๊ธฐ๊ณ , ๋ฆฌ์•กํŠธ ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ํŒŒ์ผ๋“ค๊ณผ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค

    ์ €๋Š” ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด ์žˆ๊ณ  ๊ทธ๊ฑธ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ™˜๊ฒฝ ์„ธํŒ…์„ ํ•œ ๊ฒƒ์ด๋ผ์„œ ์ƒ์„ฑ์„ ํ•˜์ง„ ์•Š์•˜์Šด๋‹ˆ๋‹ค

     

     

    ํ”„๋กœ์ ํŠธ ์‹คํ–‰

     

    ํ„ฐ๋ฏธ๋„์—์„œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋œ ํด๋”๋กœ ์ด๋™ํ•ด์„œ, ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅ (ํ˜น์€ npm run start)

    npm start

    ๊ทธ๋Ÿผ ๋กœ์ปฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:3030 ์œผ๋กœ ๋ฆฌ์•กํŠธ ์•ฑ์ด ๋„์›Œ์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

    7. ์‹คํ–‰ ์ข…๋ฃŒ

    ํ„ฐ๋ฏธ๋„์—์„œ control+c ๋ˆ„๋ฅธ ๋‹ค์Œ์— exit ๋ช…๋ น์–ด ์ž…๋ ฅํ•˜๋ฉด ๋ฆฌ์•กํŠธ ์•ฑ์ด ์‹คํ–‰์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค!

    ๋Œ“๊ธ€