
๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์ฒ์ ์์ํ ๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ์ง์ผ ํ ์ง ๋ง๋งํ ์ ์๋ค.
ํ๋ก์ ํธ๊ฐ ์ปค์ง์๋ก ๊ตฌ์กฐ๊ฐ ์ํค๊ธฐ ์ฌ์ด๋ฐ, ์ด๋ฐ์ ์ ์ ๋ฆฌํด๋๋ฉด ์ ์ง๋ณด์์ ํ์
์ด ํจ์ฌ ์์ํด์ง๋ค.
์ค๋์ ์ผ๋ฐ์ ์ธ React ์ฑ ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ ๋๋ ํ ๋ฆฌ์ ์ญํ ์ ์์ฑํด๋ณธ๋ค.
my-react-app/
โโโ public/
โโโ src/
โ โโโ assets/
โ โโโ components/
โ โโโ pages/
โ โโโ hooks/
โ โโโ utils/
โ โโโ store/
โ โโโ routes/
โ โโโ App.tsx
โ โโโ main.tsx
โโโ .gitignore
โโโ index.html
โโโ package.json
โโโ tsconfig.json
index.html์ด ์ด ํด๋ ์์ ์์ํ๋ก์ ํธ์ ํต์ฌ ์ฝ๋๋ค์ด ๋ค์ด์๋ ํด๋
useInput, useDebounce, useAuthreact-router-dom์ ๋ผ์ฐํฐ ์ค์ ์ ๋ชจ์ ๊ด๋ฆฌ๊ธฐ๋ฅ๋ณ๋ก ํด๋๋ฅผ ๋ถ๋ฆฌํ๋ ๋ฐฉ์๋ ์๋ค (Feature-based)
๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด features/, services/, api/ ํด๋ ๋ฑ๋ ๊ณ ๋ ค
ํด๋ ์์์๋ index.ts๋ฅผ ํ์ฉํ๋ฉด import ๊ฒฝ๋ก๋ฅผ ์ค์ผ ์ ์๋ค
// ์: components/index.ts
export { default as Button } from './Button';
export { default as Header } from './Header';
// ์ฌ์ฉ
import { Button, Header } from '@/components';
src/
โโโ api/ # ์๋ฒ ์์ฒญ ๋ชจ๋
โโโ components/
โโโ constants/ # ์์ ์ ์
โโโ hooks/
โโโ pages/
โโโ routes/
โโโ store/ # Zustand or Redux
โโโ styles/ # ์ ์ญ ์คํ์ผ
โโโ types/ # ํ์
์ ์ ํ์ผ
โโโ utils/
โโโ App.tsx
โโโ main.tsx
components, pages, hooks, store, utils ๋ฑ์ผ๋ก ๋๋๊ณ ,