Next.js은 파일 규칙 및 디렉토리 구조에 특정한 규칙을 가지고 있습니다. 이을 통해 더 효율적이고, 일관된 프로젝트 구조를 유지합니다.
app 폴더 세그먼트에 따라 접근 가능한 경로로를 만들며, 해당 라우트에 페이지를 생성합니다.
about 세그먼트의 페이지 생성 예시
// app/about/page.js
export default function About() {
<div>About page</div>;
}
여러 하위 경로에서 공통으로 사용하는 UI를 제작하고, 슬롯 방식으로 children
props를 사용하여, 하위 세그먼트들을 래핑합니다.
최상위 루트 layout 컴포넌트, {children}
부분에는 /app/page.tsx 컴포넌트가 출력됩니다.
// app/layout.js
import Header from "@/components/Header";
export default function RootLayout({
children,
}: Readonly<{ children: React.ReactNode }>) {
return (
<html lang="ko">
<body>
<Header />
{children}
</body>
</html>
);
}
layout과 비슷하지만 navigate시 컴포넌트가 새로 마운트 된다는 기능이 있습니다.
template UI 생성 예시
// app/about/template.js
export default function AboutTemplate() {
return (
<>
<h1>About</h1>
<p>Total Visitor : {visitor}</p>
</>
);
}
자동으로 페이지 또는 중첩된 세그먼트를 Suspense Boundary
로 래핑해주고, Susnpense Boundary
내부에서 페이지 혹은 컴포넌트 단위에 fallback UI를 보여줍니다.
loading UI 생성 예시