console.log('...')
를 사용하면 서버의 터미널에서 실행된다.// app/about/page.js
export default function AboutPage() {
return (
<main>
<h1>About Us</h1>
</main>
);
}
// app/page.js
export default function Home() {
return (
<main>
<img src="/logo.png" alt="A server surrounded by magic sparkles." />
<h1>Welcome to this NextJS Course!</h1>
<p>🔥 Let's get started! 🔥</p>
<p>
<a href="/about">About Us</a>
</p>
</main>
);
}
<a>
태그를 사용하면 리액트에서 이용하는 것처럼 단일 페이지 어플리케이션이 아니게 된다.Link
라는 특별한 컴포넌트를 사용한다. 이 컴포넌트를 NextJS 프레임워크에서 제공하며 내부 링크가 필요할 경우 앵커 요소 대신 사용해야한다.import Link from "next/link";
export default function Home() {
return (
<main>
<img src="/logo.png" alt="A server surrounded by magic sparkles." />
<h1>Welcome to this NextJS Course!</h1>
<p>🔥 Let's get started! 🔥</p>
<p>
<Link href="/about">About Us</Link>
</p>
</main>
);
}
// app/layout.js
import "./globals.css";
export const metadata = {
title: "NextJS Course App",
description: "Your first NextJS app!",
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>{children}</body>
</html>
);
}
// app/header.js
export default function Header() {
return (
<>
<img src="/logo.png" alt="A server surrounded by magic sparkles." />
<h1>Welcome to this NextJS Course!</h1>
</>
);
}
// app/page.js
import Link from "next/link";
import Header from "@/components/header"; // @ : root 프로젝트를 조회
export default function Home() {
return (
<main>
<Header />
<p>🔥 Let's get started! 🔥</p>
<p>
<Link href="/about">About Us</Link>
</p>
</main>
);
}
🔗 Project Organization and File Colocation
{
"compilerOptions": {
"paths": {
"@/*": ["./*"]
}
}
}
아래의 파일명들은 app/폴더 내부에서 생성된 때만 보호된다. app/폴더 외부에서 생성될 경우 이 파일명들을 특별한 방식으로 처리하지 않는다.
// app/blog/page.js
import Link from "next/link";
export default function BlogPage() {
return (
<main>
<h1>The Blog</h1>
<p>
<Link href="/blog/post-1">Post 1</Link>
</p>
<p>
<Link href="/blog/post-2">Post 2</Link>
</p>
</main>
);
}
// app/blog/[slug]/page.js
export default function BlogPostPage({ params }) {
return (
<main>
<h1>Blog Post</h1>
<p>{params.slug}</p>
</main>
);
}