๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

react

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

React ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐฉ๋ฒ•

 

CRA Vite (๊ถŒ์žฅ)
๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ๋กœ Webpack ์‚ฌ์šฉ ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ๋กœ Rollup ์‚ฌ์šฉ
๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋„ ๋ฒˆ๋“ค๋ง ์ง„ํ–‰ O ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฒˆ๋“ค๋ง ์ง„ํ–‰ X
์„œ๋ฒ„ ์‹œ์ž‘๊ณผ ๋ฆฌ๋กœ๋”ฉ ์‹œ๊ฐ„ ๋А๋ฆผ (์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ• ๋•Œ๋งˆ๋‹ค ๋ฒˆ๋“ค๋ง ์ง„ํ–‰) ์„œ๋ฒ„ ์‹œ์ž‘๊ณผ ๋ฆฌ๋กœ๋”ฉ ์‹œ๊ฐ„ ๋น ๋ฆ„
Webpack์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ์ด์šฉ ๊ฐ€๋Šฅ ๋น ๋ฅธ ๊ฐœ๋ฐœ ์†๋„์— ์œ ๋ฆฌ
๋ชจ๋“ˆ๋„ ๊ฐ™์ด ์„ค์น˜(node_modules) ๋ชจ๋“ˆ์€ ๋”ฐ๋กœ ์„ค์น˜ํ•ด์•ผ ๋จ
npx create-react-app  npm create vite@latest

 

* ๋ฒˆ๋“ค๋ง : ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์ฝ”๋“œ์™€ ํŒŒ์ผ์„ ํ•œ๋ฒˆ์— ๋ฌถ์–ด์ฃผ๋Š” ๊ณผ์ •

 

* CRA๊ฐ€ ์ด์ œ ์ถ”์ฒœ๋˜์ง€ ์•Š๋Š” ์ด์œ 

  1. ๋А๋ฆฐ ๊ฐœ๋ฐœ ์†๋„ → Webpack ๊ธฐ๋ฐ˜์ด๋ผ ๋นŒ๋“œ์™€ HMR ์†๋„๊ฐ€ ๋А๋ ค ์ฝ”๋“œ ๋ณ€๊ฒฝ ๋ฐ˜์˜์ด ๋Šฆ์Œ.
  2. ๋ฒˆ๋“ค ํฌ๊ธฐ ํผ → ๊ธฐ๋ณธ ์„ค์ •์ด ์ตœ์ ํ™” ๋ถ€์กฑ, ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ํฌํ•จ ๊ฐ€๋Šฅ์„ฑ ๋†’์Œ.
  3. ์„ค์ • ๋ณ€๊ฒฝ ์–ด๋ ค์›€ → Webpack๊ณผ Babel ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์–ด๋ ค์›€.
  4. ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ์„ฑ → ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ณ , Vite์— ๋น„ํ•ด ์ตœ์ ํ™”๊ฐ€ ๋ถ€์กฑํ•จ.

๊ทธ๋Ÿฌ๋‚˜ ์•„์ง ๋งŽ์ด ์“ฐ์ด๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•Œ์•„๋‘๋Š” ๊ฒƒ์ด ์ข‹๋‹ค!

 

 

 

1. ์„ค์น˜

1) CRA

  • npx create-react-app์œผ๋กœ ํ•œ๋ฒˆ์— ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. (์‹œ๊ฐ„์€ Vite๋ณด๋‹ค ๋” ๋งŽ์ด ์†Œ์š”๋œ๋‹ค.)

2) Vite 

  • ์‹œ๊ฐ„์€ ๋œ ์†Œ์š”๋˜์ง€๋งŒ ์„ ํƒ์„ ์ž…๋ ฅ๋ฐ›๋Š” ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์žˆ๊ณ  ์ถ”๊ฐ€๋กœ ์„ค์น˜ํ•ด์ค˜์•ผ ํ•œ๋‹ค.
  • ๋‚˜๋Š” react๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์ด ์„ ํƒ์„ ํ•ด์คฌ๊ณ ,
  • ์„ค์น˜๊ฐ€ ๋ฐ”๋กœ ์™„๋ฃŒ๋˜๋ฉด ์ƒ์„ฑํ•œ ํด๋”๋กœ ์ด๋™ํ•ด npm install์„ ํ•ด์ค€๋‹ค.

 

 

2. ๊ตฌ์กฐ ๋ฐ ์‹คํ–‰ ์ฐจ์ด

 

ํฐํŠธ ํฌ๊ธฐ ์ฐจ์ด ์ด์Šˆ...

 

1) CRA

  • ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ์ธ App์ด๋‚˜ ๊ธฐํƒ€ ํŒŒ์ผ์ด js ํ˜•์‹ ํŒŒ์ผ
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹œ์ž‘์  ์—ญํ• ์ด index.js
  • ๊ทธ ์™ธ์—๋„ src์— ์ถ”๊ฐ€์ ์ธ ํŒŒ์ผ๋“ค์ด ๋” ์ƒ์„ฑ๋˜์–ด์žˆ์Œ
  • npm run start๋กœ ์‹คํ–‰
  • ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ 3000

2) Vite

  • ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ์ธ App์ด๋‚˜ ๊ธฐํƒ€ ํŒŒ์ผ์ด jsx ํ˜•์‹ ํŒŒ์ผ
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹œ์ž‘์  ์—ญํ• ์ด main.jsx
  • npm run dev๋กœ ์‹คํ–‰
  • ํฌํŠธ๋ฒˆํ˜ธ๊ฐ€ 5173

 

 

 

์ด ๋•Œ ์•ฑ์„ ์‹คํ–‰์‹œํ‚ค๋ฉด ํ„ฐ๋ฏธ๋„์ด ๊ณ„์† ์œ„์™€ ๊ฐ™์€ ์ƒํƒœ์ผํ…๋ฐ,

win / mac ๋‘˜๋‹ค ctrl + c๋ฅผ ๋ˆ„๋ฅด๋ฉด ์„œ๋ฒ„๋ฅผ ์ข…๋ฃŒ์‹œํ‚ค๋ฉด์„œ ๋‹ค์‹œ ์›๋ž˜์˜ ํ„ฐ๋ฏธ๋„ ์ฐฝ์œผ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. 

 

 

3. create-react-app VS vite์˜ ์„ฑ๋Šฅ ๋น„๊ต

 

๋น„๊ต ํ•ญ๋ชฉ CRA Vite
์ดˆ๊ธฐ ๋นŒ๋“œ ์†๋„ Webpack ๊ธฐ๋ฐ˜์œผ๋กœ ๋นŒ๋“œ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ. ESBuild๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๊ธฐ ๋นŒ๋“œ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฆ„.
๊ฐœ๋ฐœ ์„œ๋ฒ„ ์†๋„ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‹œ ๋ฐ˜์˜ ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆผ. HMR(Hot Module Replacement)์ด ์ฆ‰๊ฐ์ ์œผ๋กœ ๋ฐ˜์˜๋จ.
๋ฒˆ๋“ค ํฌ๊ธฐ ๊ธฐ๋ณธ ์„ค์ •์—์„œ ์ตœ์ ํ™”๊ฐ€ ๋ถ€์กฑํ•จ. ์ตœ์‹  ๋ฒˆ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ ํ™”๊ฐ€ ์ž˜๋จ.
๋ชจ๋“ˆ ๊ตฌ์„ฑ ๋ฐฉ์‹ Webpack ๊ธฐ๋ฐ˜์˜ ์„ค์ •์ด ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ์ œ๊ณต๋จ. Rollup๊ณผ ESBuild๋ฅผ ํ™œ์šฉํ•ด ๋น ๋ฅด๊ฒŒ ๋ฒˆ๋“ค๋ง๋จ.
react ๊ณต์‹ ์ง€์› ์—ฌ๋ถ€ React ๊ณต์‹ ํŒ€์—์„œ ์œ ์ง€๋ณด์ˆ˜ ํ•˜์ง€๋งŒ, ๋” ์ด์ƒ ์ถ”์ฒœ๋˜์ง€ ์•Š์Œ. React ๊ณต์‹ ๋ฌธ์„œ์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ์‹.

 

- Webpack : Javascript ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ๋กœ, ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ํ•˜๋‚˜์˜ ๋ฒˆ๋“ค๋กœ ๋ฌถ์–ด ์ตœ์ ํ™”๋œ ํ˜•ํƒœ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋„๊ตฌ

- ESbuild : Go์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ๊ณ ์† ๋ฒˆ๋“ค๋Ÿฌ ๋ฐ ํŠธ๋žœ์Šค ํŒŒ์ผ๋Ÿฌ๋กœ, ์›นํŒฉ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅธ ์†๋„๋กœ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œ์‹œํ‚ค๋Š” ๋„๊ตฌ

- Rollup : ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ๋กœ, ๋ฒˆ๋“ค ํฌ๊ธฐ๊ฐ€ ์›นํŒฉ๋ณด๋‹ค ์ž‘์œผ๋ฉฐ ๋ชจ๋“ˆ, ์ฝ”๋“œ ์ตœ์ ํ™”์— ํŠนํ™”๋˜์–ด ์žˆ์Œ

- HMR : ๋ฒˆ๋“ค๋Ÿฌ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ์ƒˆ๋กœ๊ณ ์นจ ํ•˜์ง€ ์•Š๊ณ  ๋ณ€๊ฒฝ๋œ ๋ชจ๋“ˆ๋งŒ ์ฆ‰์‹œ ๊ต์ฒดํ•ด ์ ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. (์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ui๋ฅผ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅํ•จ)