์๋ก ์์ฑํ ํ๋ก์ ํธ๊ฐ ์๋๋ฐ, ์ด ๋๋ ํ ๋ฆฌ๋ณ ๊ตฌ์กฐ์ ์ญํ ์ ๋ํ ์ ๋ฆฌ๊ฐ ํ์ํด๋ณด์ฌ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌ!

1. public/
์ ์ ํ์ผ(html, ์ด๋ฏธ์ง, ํ๋น์ฝ ๋ฑ)์ ๋๋ ํด๋. ์ด ํด๋ ์์ ํ์ผ์ ๋น๋ ์ ๊ฐ๊ณต ์์ด ๊ทธ๋๋ก ๋ณต์ฌ๋๋ฉฐ ์ด๋ฏธ์ง๋ ๋ฉํ ํ๊ทธ ๋ฑ HTML์์ ์ง์ ๋ถ๋ฌ์์ผ ํ ๊ฒ๋ค์ ์ ์ฅํ๋ค..
โป ์ ์ ํ์ผ : ์๋ฒ์์ ์ฒ๋ฆฌ๋ ๋ณํ ์์ด ๊ทธ๋๋ก ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ๋๋ ํ์ผ. ์์ฒญํ ๋ ๋ง๋ค ๊ฐ์ ๋ด์ฉ์ด๋ฉฐ, ์ฒ๋ฆฌ์๊ฐ์ด ์๊ณ (=์๋ต์ด ๋น ๋ฆ), ํ์ผ์ ๊ทธ๋๋ก ์ ์กํ๋ค(=์๋ฒ ์ฒ๋ฆฌ ์์).
์นํฉ์ด ๊ฑด๋ค์ง ์ํน, ๋น๋ ํ์๋ ํ์ผ๋ช ์ด ๊ทธ๋๋ก์ด๋ฉฐ ์ง์ url์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. "ํ๋ฒ ๋ง๋ค์ด๋์ผ๋ฉด ๋๊ฐ ์ธ์ ์์ฒญํด๋ ๊ฐ์ ๋ด์ฉ์ ๋ณด์ฌ์ฃผ๋ ๋ณํ์ง ์๋ ํ์ผ"
ex) ๋ก๊ณ , ๋ฐฐ๋, ํฐํธ, ๋ฌธ์, ๋์์
โป ๋์ ํ์ผ : ์์ฒญ๋ง๋ค ๋ณํ ์ ์์ผ๋ฉฐ, ์ฒ๋ฆฌ ์๊ฐ์ด ํ์ํ๊ณ (=์๋ต์ด ๋๋ฆผ), ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ, ๊ณ์ฐ ๋ฑ์ ์๋ฒ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค.
์นํฉ์ด ์ฒ๋ฆฌํ๋ฉฐ(์์ถ, ์ต์ ํ, ํด์ ๋ฑ), ๋น๋ ํ ํ์ผ๋ช ์ด ๋ณ๊ฒฝ๋ ์ ์์ผ๋ฉฐ(ex. logo.a1b2c3.jpg) import๋ฅผ ํตํด์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
ex) ์ฌ์ฉ์ ํ์ฌ, ๊ฒ์ ๊ฒฐ๊ณผ, ํ์ฌ ์๊ฐ
2. src/
์ค์ React ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๊ฐ ๋ค์ด๊ฐ ์๋ ํต์ฌ ํด๋.
- assets/ : ์ ์ ์์ฐ(์ด๋ฏธ์ง, ํฐํธ, ์์ด์ฝ, ์คํ์ผ ๋ฑ)์ ๋ฃ๋ ๊ณณ(ex. assets/images, assets/fonts, asstes/icons)
- components/ : ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ์ปดํฌ๋ํธ๋ค์ ์ ์ฅํ๋ ํด๋(ex. button, modal, input, card ๋ฑ), ์์ ๋จ์๋ก ์ชผ๊ฐ์ ธ์ ์ฌ๋ฌ ํ์ด์ง์์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ
- data/ : ์ ์ ์ธ ๋ฐ์ดํฐ ํ์ผ์ด๋ ๋๋ฏธ(Mock)๋ฐ์ดํฐ๋ฅผ ์ ์ฅ(ex. JSONํํ์ ๊ฒ์๊ธ ๋ชฉ๋ก, ์ค์ ๊ฐ, ๋ชฉ๋ก ์์ดํ ๋ฑ)
- functions(ํน์ utils/) : ์ ํธ๋ฆฌํฐ ใ ๋ง์๋ ํฌํผ ํจ์๋ค์ ์ ๋ฆฌ(ex. ๋ ์ง ํฌ๋งท, ์ ๊ท์ ๊ฒ์ฌ, API์๋ต ์ฒ๋ฆฌ, formplus์ ๊ฐ์ ํ๋ก๊ทธ๋จ api ๋ฑ)
- layouts/ : ๊ณตํต ๋ ์ด์์ ์ปดํฌ๋ํธ๋ค์ ์ ์ฅ
- pages/ : ๋ผ์ฐํธ์ ๋์๋๋ ๊ฐ๋ณ ํ์ด์ง ์ปดํฌ๋ํธ๋ฅผ ์ ์ฅ. router.tsx์ ๋งคํ๋๋ ์ค์ ์ฝํ ์ธ ํ๋ฉด์ ๋ณด์ฌ์ค
- routers/ : ๋ผ์ฐํฐ ์ค์ , ๊ฒฝ๋ก ์์, ์ฌ์ดํธ ๋งต ๋ฑ ๋ผ์ฐํ
๊ด๋ จ ํ์ผ ์ ์ฅ
- paths.ts : ๋ชจ๋ ๊ฒฝ๋ก ๋ฌธ์์ด์ ๋ชจ์๋์ ์์ ํ์ผ
- router.tsx: React Router์ ์ค์
- sitemap.ts: ๋ฉ๋ด, ์ฌ์ด๋๋ฐ, ๋ค๋น๊ฒ์ด์ ํญ๋ชฉ์ ์ํ ๊ฒฝ๋ก ์ ๋ณด
3. App.tsx
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฃจํธ ์ปดํฌ๋ํธ. ์ ์ฒด ๊ตฌ์กฐ์ ์ง์ ์ (๋ผ์ฐํ , ๋ ์ด์์ ๋ฑ ์กฐํฉ)
4. index.css
์ ์ญ css ์ค์
5. main.tsx
React์ฑ์ด ์ค์ ๋ก ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง๋๋ ์์์ . ReactDOM.createRoot()๋ก App์ DOM์ ๋ง์ฐํธํ๋ฉฐ, index.html์ id="root"์ ์ฐ๊ฒฐ๋๋ค.
โ ์ค์ ํ๋ฆ์?
1. ๋ธ๋ผ์ฐ์ ๋ index.html์ ์ฝ๊ณ ,
2. main.tsx๊ฐ ์คํ๋์ด,
3. App.tsx๋ฅผ ํตํด ์ ๋ฐ์ ์ธ ๋ ์ด์์๊ณผ ๋ผ์ฐํ ์ ๊ตฌ์ฑํ๊ณ ,
4. ๋ผ์ฐํ ์ ๋ฐ๋ผ pages/์์ ์๋ ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ๋ณด์ฌ์ง๊ณ ,
5. components/, layouts/, functions/ ๋ฑ์ ๊ทธ๊ฑธ ๋์์ฃผ๋ ๊ตฌ์กฐ์ด๋ค.
โ public ๋ด์ ํ์ผ๊ณผ src/assets ๋ด์ ํ์ผ์ ์ฐจ์ด์ ์?
public ํด๋์ ํ์ผ์ "์ ์ ํ์ผ"๋ค์, assetsํด๋์๋ ๋ชจ๋ ํ์ผ ์ฆ "๋์ ํ์ผ"๋ค์ ์ฒ๋ฆฌํ๋ค.
| public ํด๋์ ๋ฃ์๊ฒ | src/assets์ ๋ฃ์ ๊ฒ |
| ๐ข ์ฌ๋ฌ ํ์ด์ง์์ ๊ณตํต ์ฌ์ฉ(favicon, logo) ๐ข ์ธ๋ถ์์ ์ง์ ์ ๊ทผ ํ์(sitempap.xml) ๐ข ๋งค์ฐ ํฐ ํ์ผ : ๋์์, ๋์ฉ๋ ์ด๋ฏธ์ง ๐ข ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
๐ข ํน์ ์ปดํฌ๋ํธ์์๋ง ์ฌ์ฉํ๋ ๊ฒ ๐ข ์ต์ ํ๊ฐ ํ์ํ ํ์ผ: ์ด๋ฏธ์ง, ์์ด์ฝ ๐ข ๊ฐ๋ฐ ์ค ์์ฃผ ๋ณ๊ฒฝ๋๋ ํ์ผ ๐ข ์ปดํฌ๋ํธ์ ํจ๊ป ๊ด๋ฆฌํ๊ณ ์ถ์ ํ์ผ |
'ToyProjects๐งธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ํ๋ก์ ํธ ์ธํ - router, path ์์ฑ (0) | 2025.07.09 |
|---|---|
| ๋ฒ์์ ์๋ฒ๋ฆฐ ๊น์ ์ฌ๊ธฐ (3) | 2025.05.15 |