13버전 이전에는 Pages Router를 사용했으나 13버전 부터 App Router가 소개되었습니다. app 디렉터리에서 작동하며 호환성을 위해 pages 디렉터리와 나란히 동작하는 것이 가능하다고 합니다. app 디렉터리 내부의 컴포넌트는 React Server Components입니다.
디렉터리 단위로 url을 구성할 수 있는 것은 이전 방식과 동일합니다.
app/
board/
page.tsx
article/
[id]/
page.tsx
pages/
board/
index.tsx
article/
[id].tsx
App Router에서는 파일 이름에 따라 역할이 정해진 것이 있습니다. 다음은 파일 이름과 그 용도입니다.
해당 파일의 계층 구조는 다음과 같습니다.
<Layout>
<Template>
<ErrorBoundary fallback={<Error />}>
<Suspense fallback={<Loading />}>
<ErrorBoundary fallback={<NotFound />}>
<Page />
</ErrorBoundary>
</Suspense>
</ErrorBoundary>
</Template>
</Layout>
만약 디렉터리 구조가 아래와 같다면
/dashboard
layout.tsx
error.tsx
loading.tsx
settings/
layout.tsx
error.tsx
loading.tsx
page.tsx
컴포넌트 구조는 아래와 같이 중첩 구조로 구성됩니다
<Layout>
<ErrorBoundary fallback={<Error />}>
<Suspense fallback={<Loading />}>
<Layout>
<ErrorBoundary fallback={<Error />}>
<Suspense fallback={<Loading />}>
<Page />
</Suspense>
</ErrorBoundary>
</Layout>
</Suspense>
</ErrorBoundary>
</Layout>