• Blog

  • Snippets

Next.js Routing

May 24, 2024

NEXT JS

App Route

Routing

NEXT JS 공식문서를 참고하여 번역함.

# 라우팅 기본 사항

모든 애플리케이션의 골격은 라우팅입니다. 이 페이지에서는 웹을 위한 라우팅의 기본 개념과 Next.js에서 라우팅을 처리하는 방법을 소개합니다.

# 용어

먼저, 문서 전체에서 사용되는 용어들을 보게 될 것입니다. 다음은 빠른 참조입니다:

image-01.png


image-02.png


# The app Router

버전 13에서 Next.js는 React Server Components를 기반으로 한 새로운 App Router를 소개했으며, 공유된 레이아웃, 중첩 라우팅, 로딩 상태, 에러 핸들링 등을 지원합니다.

App Router는 app 이라는 새 디렉토리에서 작동합니다. app 디렉토리는 pages 디렉토리와 함께 작동하여 점진적으로 도입할 수 있도록합니다. 이를 통해 응용 프로그램의 몇 가지 루트를 이전 동작을 유지하면서 새 동작으로 전환할 수 있습니다. 응용 프로그램이 pages 디렉터리를 사용하는 경우 Pages Router 문서도 참조하세요.

중요 사항: App Router는 Pages Router보다 우선 순위가 높습니다. 디렉터리 간의 라우트는 동일한 URL 경로로 해결되어 빌드 시간 오류가 발생하여 충돌을 방지합니다.

image-03.png

기본적으로 app 내의 컴포넌트는 React Server Components. 입니다. 이는 성능 최적화의 이점이 있으며, 필요에 따라 손쉽게 사용할 수 있습니다. 또한, Client Components. 도 사용할 수 있습니다.

권장 사항: Server Components를 처음 접하는 경우 Server 페이지를 확인하세요.

# 폴더 및 파일의 역할

Next.js 는 파일 시스템 기반의 라우터를 사용합니다.



# Route Segments.

경로의 각 폴더는 경로 세그먼트를 나타냅니다. 각 경로 세그먼트는 URL 경로의 해당 세그먼트에 매핑됩니다.

image-04.png

# Nested Routes

중첩된 라우트를 만들려면, 폴더를 중첩하면 됩니다. 예를 들어, app 디렉터리에 두 개의 새로운 폴더를 중첩하여 /dashboard/settings 라우트를 추가할 수 있습니다.

/dashboard/settings 라우트는 세개의 세그먼트로 구성됩니다:


# 파일 규칙

Next.js는 중첩된 경로에서 특정 동작을 가진 UI를 만들기 위한 특수 파일 세트를 제공합니다.


알아두면 좋은 정보: 특별한 파일에는 .js, .jsx 또는 .tsx 파일 확장자를 사용할 수 있습니다.

# 컴포넌트 계층 구조

라우트 세그먼트에 특수 파일로 정의된 React 컴포넌트들은 특정한 계층 구조로 렌더링 됩니다:


image-05.png

중첩된 라우트에서는 세그먼트의 컴포넌트가 해당 부모 세그먼트의 컴포넌트 안에 중첩된니다.

image-06.png

# 공존(Colocation)

특정한 파일 외에도 자신의 파일(e.g. components,styles,tests 등)을 app 디렉터리의 폴더에 동시에 놓을 수 있습니다.

이는 폴더가 라우트를 정의하는 반면, page.js 또는 route.js 에서 반환된 내용만이 공개적으로 접근 가능하기 때문입니다.

image-07.png

Learn more about Project Organization and Colocation.

# 고급 라우팅 패턴

App Router는 더 고급 라우팅 패턴을 구현하는 데 도움이 되는 규칙 세트도 제공합니다.


이러한 패턴을 통해 소규모 팀과 개인 개발자가 구현하기 복잡했던 기능을 더 풍부하고 복잡한 UI를 구축할 수 있게 됩니다.