1. Next.js ๋ผ์ฐํ ๊ธฐ๋ณธ ๊ฐ๋
- Next.js๋ ํ์ผ ๊ธฐ๋ฐ ๋ผ์ฐํ ์ ์ฌ์ฉํฉ๋๋ค.
- ์ฆ,
app/
ํด๋ ์์ ํ์ผ์ ๋ง๋ค๋ฉด ์๋์ผ๋ก URL ๊ฒฝ๋ก๊ฐ ์์ฑ๋ฉ๋๋ค.
์์:
app/page.tsx โ /
app/about/page.tsx โ /about
app/contact/page.tsx โ /contact
๐ ๋ณ๋์ ๋ผ์ฐํฐ ์ค์ ์์ด ํด๋/ํ์ผ ๊ตฌ์กฐ = ๋ผ์ฐํ ์ด๋ผ๋ ์ ์ด Next.js์ ํฐ ์ฅ์ ์ด์์.
2. About ํ์ด์ง ๋ง๋ค๊ธฐ
(1) app/about/page.tsx
์์ฑ
export default function AboutPage() {
return (
<main>
<h1>About ํ์ด์ง</h1>
<p>์ด ํ์ด์ง๋ Next.js ๋ผ์ฐํ
์ ํ์ตํ๊ธฐ ์ํ ์์ ์
๋๋ค.</p>
</main>
);
}
โ ๋ธ๋ผ์ฐ์ ์์ http://localhost:3000/about
์ ์ํ๋ฉด About ํ์ด์ง๊ฐ ์๋์ผ๋ก ์ด๋ฆฝ๋๋ค ๐
3. ํ์ด์ง ์ด๋ (Link ์ปดํฌ๋ํธ)
Next.js์์๋ Link
์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด์ง ๊ฐ ์ด๋์ ํฉ๋๋ค.
ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ค๋น๊ฒ์ด์ ์ด ์ ์ฉ๋์ด ๋น ๋ฅธ ํ์ด์ง ์ ํ์ด ๊ฐ๋ฅํด์.
(1) app/page.tsx
์์
import Link from "next/link";
import styles from "@/styles/home.module.scss";
export default function Home() {
return (
<main>
<h1 className={styles.title}>Hello Next.js ๐</h1>
<p className={styles.description}>
์ด๊ฒ์ด ๋์ ์ฒซ ๋ฒ์งธ Next.js ํ์ด์ง์
๋๋ค.
</p>
<Link href="/about">๐ About ํ์ด์ง๋ก ์ด๋</Link>
</main>
);
}
๐ ๋ฉ์ธ ํ์ด์ง์์ ๐ About ํ์ด์ง๋ก ์ด๋
๋ฒํผ์ ํด๋ฆญํ๋ฉด /about
์ผ๋ก ์ด๋ํฉ๋๋ค.
4. ๊ธ๋ก๋ฒ ๋ค๋น๊ฒ์ด์ ๋ง๋ค๊ธฐ
์์ฃผ ์ฐ๋ ๋ค๋น๊ฒ์ด์ ์ layout.tsx์์ ๊ณตํต์ผ๋ก ๋ฃ์ด๋๋ ๊ฒ ์ข์์.
(1) app/layout.tsx
์์
import { Noto_Sans_KR } from 'next/font/google';
import Link from 'next/link';
import './globals.css';
const notoSansKR = Noto_Sans_KR({
subsets: ['latin'],
weight: ['400', '500', '700'],
});
export const metadata = {
title: 'My Next.js App',
description: 'Next.js ๊ธฐ์ด ๊ฐ์ข ํ๋ก์ ํธ',
};
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="ko">
<body className={notoSansKR.className}>
<header style={{ padding: '1rem', borderBottom: '1px solid #ddd' }}>
<nav style={{ display: 'flex', gap: '1rem' }}>
<Link href="/">ํ</Link>
<Link href="/about">์๊ฐ</Link>
</nav>
</header>
<main style={{ padding: '2rem' }}>{children}</main>
</body>
</html>
);
}
๐ ์ด์ ๋ชจ๋ ํ์ด์ง์์ ์๋จ์ ํ | ์๊ฐ
๋ฉ๋ด๊ฐ ๋ณด์ด๊ณ , ํด๋ฆญ ์ ์ด๋๋ฉ๋๋ค.
5. ์ค๋์ ์ ๋ฆฌ
- ํ์ผ ๊ธฐ๋ฐ ๋ผ์ฐํ
์ดํด (
app/about/page.tsx
โ/about
) Link
์ปดํฌ๋ํธ๋ก ํ์ด์ง ์ด๋layout.tsx
๋ฅผ ํ์ฉํด ๊ธ๋ก๋ฒ ๋ค๋น๊ฒ์ด์ ๋ง๋ค๊ธฐ
๐ฌ ๋๊ธ
โป ๋ก๊ทธ์ธ ํ ๋๊ธ์ ์์ฑํ ์ ์์ต๋๋ค.