routes/
โโ home.tsx
โโ login.tsx
โโ create-account.tsx
โโ profile.tsx
์ด ํ์ผ๋ค์ ๊ณตํต์ ์ ๋ณดํต ์ด๋ฐ ํํ์ ๋๋ค:
// routes/login.tsx
export default function Login() {
return (
<div>
<h1>๋ก๊ทธ์ธ</h1>
{/* ์ฌ๋ฌ ์ปดํฌ๋ํธ ์กฐํฉ */}
</div>
);
}
URL๊ณผ 1:1 ๋์
/login โ login.tsx/profile โ profile.tsx๋ณดํต ๋ผ์ฐํฐ์์ ์ง์ import๋จ
ํ ํ๋ฉด ์ ์ฒด๋ฅผ ์ฑ ์์ง
๋ค๋ฅธ ํ์ด์ง์์ ์ฌ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์
๐ ๊ทธ๋์
โ
โ๋ผ์ฐํธ = ๊ฐ๊ฐ์ ํ์ด์งโ
๋ผ๊ณ ์ดํดํ์
๋ ๋ฉ๋๋ค.
components/
โโ layout.tsx
์๋ฅผ ๋ค๋ฉด:
// components/layout.tsx
export default function Layout({ children }) {
return (
<>
<Header />
<main>{children}</main>
<Footer />
</>
);
}
๐ ์ด Layout์
๊ทธ๋์ ๋ง์ํ์ ํํ ์ค ์ด ๋ถ๋ถ์ด ์ ํํฉ๋๋ค ๐
ํ์ด์ง์ ์ฝ์ ๋๋ ๊ตฌ์ฑ์์
์ด๋์๋ ์ํ๋ฉด ํ์ด์ง ์ด๋๋ ์ถ๊ฐํ ์ ์๋ ์์
โ๏ธ ๋ง์ต๋๋ค.
๋ณดํต ๊ตฌ์กฐ๋ ์ด๋ ๊ฒ ํ๋ฌ๊ฐ๋๋ค:
main.tsx
โโ App.tsx
โโ Router
โโ routes/*
// App.tsx ์์
<BrowserRouter>
<Layout>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/login" element={<Login />} />
</Routes>
</Layout>
</BrowserRouter>
์ฌ๊ธฐ์ ํต์ฌ:
routes = ๊ฐ ๋ฐฉ
components = ๊ฐ๊ตฌ
๐ ๋ฐฉ์ ์ฃผ์(URL)๊ฐ ์์ง๋ง
๐ ๊ฐ๊ตฌ๋ ์ฃผ์๊ฐ ์์ต๋๋ค
โ ์ด ํ์ผ์ ์ด๋์ ๋ฌ์ผ ํ ๊น?
URL๋ก ์ง์ ์ ๊ทผํด์ผ ํ๋?
๋ค๋ฅธ ํ์ด์ง์์๋ ์ฌ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ์๋?
Router์ ๋ฑ๋ก๋ ๊น?
โ
๋ค, ์ง๊ธ ๊ตฌ์กฐ๋ ์์ฃผ ๊ต๊ณผ์์ ์ธ ์ด๊ธฐ ๊ตฌ์กฐ์
๋๋ค.
ํนํ layout.tsx๋ฅผ components์ ๋ ๊ฒ๋ ์ ํํฉ๋๋ค.
๋์ค์ ํ๋ก์ ํธ ์ปค์ง๋ฉด ๋ณดํต ์ด๋ ๊ฒ ํ์ฅ๋ฉ๋๋ค:
components/
โโ layout/
โโ ui/
โโ auth/
โโ common/
routes/
โโ home.tsx
โโ login.tsx
โโ profile.tsx