[TIL] 20240514 - React App ์ƒ์„ฑ

jiniยท2024๋…„ 5์›” 14์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
9/48

react app ์ƒ์„ฑ


๐Ÿ”Ž NPM(Node Package Manager)
npm์€ ๋…ธ๋“œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋กœ, npm registry์—์„œ ํŒจํ‚ค์ง€๋“ค์„ ๊ฐ€์ ธ์™€์„œ ์„ค์น˜

๐Ÿ”Ž NPX(Node Package eXecute)
npx๋Š” ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ , npm registry์—์„œ ์›ํ•˜๋Š” ํŒจํ‚ค์ง€๋ฅผ ์‹คํ–‰

๐ŸงŠ vite

vite๋Š” ๋น ๋ฅด๊ณ  ๊ฐ„๊ฒฐํ•œ ๋ชจ๋˜ ์›น ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์— ์ดˆ์ ์„ ๋งž์ถฐ ๋งŒ๋“ค์–ด์ง„ ๋นŒ๋“œ ๋„๊ตฌ

create-react-app์€ javascript๋กœ ๊ตฌ์„ฑ๋œ webpack์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์†๋„๊ฐ€ ๋А๋ฆฐ ํŽธ์ด๋ผ vite๋ฅผ ์‚ฌ์šฉ

npm init vite
project name: vite-project
Select a framework: > -Use arror-keys. Return to submit.
> Vanilla
> Vue
> React
> Preact
> Lit
> Svelte
> Others
Select a variant: > -Use arrow-keys. Return to submit.
> JavaScript
> TypeScript
> JavaScript + SWC
> TypeScript + SWC 

package.json dependencies ์„ค์น˜

npm i

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

npm run dev

package.json > script > dev ์ด๋ฏ€๋กœ npm run dev
๋งŒ์•ฝ "dev" โ†’ "start" ์ด๋ฉด, npm run start



src ๋‚ด๋ถ€ ํด๋”๊ตฌ์กฐ


โ”œโ”€ src
โ”œโ”€ assets
โ”œโ”€ components 
โ”œโ”€ hooks
โ”œโ”€ store
โ”œโ”€ types
โ”œโ”€ App.css
โ”œโ”€ App.tsx
โ”œโ”€ index.css
โ”œโ”€ main.tsx
โ””โ”€ vite-env.d.ts

๐ŸงŠ store

๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์™€ ์ž๋…€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์†Œํ†ตํ•˜๊ธฐ ์œ„ํ•ด props ์‚ฌ์šฉ

โš ๏ธ ์•ฑ์ด ์ปค์ง€๊ฒŒ ๋˜๋ฉด, ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐ’์„ props๋กœ ๊ณต์œ ํ•˜๋ ค๋ฉด ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•ด์ง
โ†’ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ

๐Ÿ’ก ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • Redux
  • Mobx
  • Zustand
  • Recoil
  • React
  • Context



export


๐ŸงŠ export

  • exportํ•œ ์ด๋ฆ„์œผ๋กœ import ํ•ด์•ผ ํ•จ
  • ์ด๋ฆ„์„ ์ค‘๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ์ฃผ์–ด์•ผ ํ•จ

Test.js

export function Test() {
  return (
    <h2>export</h2>
  )
}

App.js

import { Test } from "./Test.js";

function App() {
  return (
    <Test></Test>
  )
}

export default App;

๐ŸงŠ export default

  • ๊ฒฝ๋กœ๋งŒ ์˜ฌ๋ฐ”๋ฅด๋ฉด exportํ•œ ์ด๋ฆ„๊ณผ ๋‹ฌ๋ผ๋„ import ๊ฐ€๋Šฅ
  • ์ด๋ฆ„์„ ์ค‘๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ์ฃผ์ง€ ์•Š์•„๋„ ๋จ

Test.js

export default function Test() {
  return (
    <h2>export default</h2>
  )
}

App.js

import TestDefault from "./Test.js";

function App() {
  return (
    <Test></Test>
  )
}

export default App;



SPA vs MPA


๐ŸงŠ SPA

ํ•œ ๊ฐœ์˜ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋œ Application
์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ ์ฒ˜์Œ ์ ‘๊ทผํ•  ๋•Œ ํ•œ๋ฒˆ์— ๋‹ค์šด๋กœ๋“œ
โ†’ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€ ์š”์ฒญ์ด ์žˆ์„ ๋•Œ, ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์ „๋‹ฌ ๋ฐ›์•„ ๊ฐฑ์‹ 

๐ŸงŠ MPA

์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋œ Application
์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ์ •์  ๋ฆฌ์†Œ์Šค ๋‹ค์šด๋กœ๋“œ
โ†’ ๋งค๋ฒˆ ์ „์ฒด ํŽ˜์ด์ง€๊ฐ€ ๋‹ค์‹œ ๋ Œ๋”๋ง๋จ

0๊ฐœ์˜ ๋Œ“๊ธ€