라우팅 기본
모든 애플리케이션의 뼈대는 라우팅이다.
라우팅의 기본 개념과 Next.js에서 라우팅 처리하는 방법에 대해서 소개한다.
용어

- 트리 (Tree) : 계층 구조를 시각화하기 위한 규칙.
- 부모 및 자식 구성 요소가 있는 구성 요소 트리
- 폴더 구조
- 하위 트리 : 트리의 일부, 새 루트(first)에서 시작하여 Leaves(last)에서 끝난다.
- 루트 : 트리 또는 하위트리 (예: 루트 레이아웃)의 첫 번째 노드
- Leaf : URL 경로의 마지막 세그먼트와 같이 하위 트리에 자식이 없는 노드

- URL 세그먼트 : 슬래시로 구분된 URL 경로의 일부
- URL 경로 : 도메인 다음에 오는 URL의 일부 ( 세그먼트로 구성된다.)
App Router
Next.js v13은 React Server Components 기반의 새로운 App router를 선보였다.
- 공유 레이아웃
- 중첩 라우팅
- 로딩 상태
- 오류 처리 등을 지원한다.
App Router는 App이라는 새로운 디렉터리에서 작동한다. App 디렉터리는 페이지 디렉터리와 함께 작동하여 점진적인 채택을 허용한다.
이전 동작을 위해 페이지 디렉터리에 다른 경로를 유지하면서 애플리케이션의 일부 경로를 새로운 동작으로 선택할 수 있다.
중요
App Router는 Page Router보다 우선이다. 디렉터리가 동일한 URL 경로로 사용하지 않아야 하며, 충돌을 방지하기 위해서 Build 과정에서 오류가 발생한다.

기본적인 앱 내부 구성요소
권장 사항:서버 구성 요소를 처음 사용하는 경우 서버 페이지를 확인한다.
폴더 및 파일 역할
Next.js는 파일 시스템 기반 라우터를 사용한다. ( 파일을 이용하여 라우터를 설정한다.)
- page.js
- Route 세그먼트에 표시되는 UI를 만들기 위해서 파일을 사용한다.(특수파일 : loading, layout, error... )
경로 세그먼트
경로의 각 폴더는 Route Segment를 나타낸다. 각 Route Segment는 URL 경로의 해당 세그먼트에 매핑된다.

중첩 라우팅
중첩 라우팅은 폴더를 서로 중첩하여 만들 수 있다. 예를 들어 App 디렉터리에서 두 개의 새 폴더를 중첩하여 /dashboard/setting 경로를 추가할 수 있다.
/dashboard/setting 는 세 가지의 세그먼트로 구성된다.
/: 루트 세그먼트dashboard: 세그먼트setting: Leaf 세그먼트
파일 규칙
Next.js는 중첩된 경로에서 특정 동작을 사용하여 UI를 만드는 특수한 파일을 지원한다.
layout: 세그먼트 및 해당 자식에 대한 공유 UIpage: 경로의 고유 UI 및 경로를 공개적으로 접근할 수 있도록 한다.loading: 세그먼트 및 해당 자식에 대한 Loading UInot-found: 세그먼트 및 해당 자식에 대한 Not-Found UIerror: 세그먼트 및 해당 자식에 대한 Error UIglobal-error: 글로벌 Error UIroute: Server-side API 엔드포인트template: layout과 비슷하지만 자식요소마다 새로운 인스턴스를 생성default: 병렬 Route에 대한 폴백 UI
구성요소 계층
라우터 세그먼트의 특수 파일에 정의된 반응 구성요소는 특정 계층으로 렌더링 된다.
layouttemplateerror.js: error boundaryloading.js: suspense boundarynot-found.js: error boundarypage.jsor 중첩된layout.js

중첩 라우터에서 세그먼트의 구성요소는 상위 세그먼트 구성요소 내부에 중첩된다.

Colocation
특수 파일 외에도 App 디렉터리의 폴더 내에 자신의 파일을 배치할 수 있는 옵션이 있다. (예: 구성요소, 스타일, 테스트 등)
폴더는 route로 정의되지만 page.js 또는 route.js에서 반환되는 내용만 주소로 지정이 가능하다.

- /component/button : 라우팅 불가
- /lib/constants : 라우팅 불가
- /dashboard : 라우팅 가능 ( /dashboard/page 아님!)
- /dashboard/nav : 라우팅 불가
- /api : 라우팅 가능 ( /api/route 아님!)
- /api/db : 라우팅 불가
고급 라우팅 패턴
앱 라우터는 고급 라우팅 패턴을 구현하는데 도움이 되는 규칙을 제공한다.
- 병렬 라우트 :독립적으로 탐색할 수 있는 두 개 이상의 페이지를 동일한 페이지에서 동시에 표시할 수 있다. 자체 하위 탐색이 있는 분할 보기 (예: 대시보드)에 사용할 수 있다.
- 라우팅 가로채기 : 경로를 가로채서 다른 경로의 컨텍스트에 표시할 수 있다. 현재 페이지의 컨텍스트를 유지할 때 사용할 수 있다. (예 : 하나의 작업을 편집하거나 피드에서 사진을 확장하는 동안 모든 작업을 볼 수 있다.)
이러한 패턴을 통해서 복잡했던 기능을 쉽게 구현할 수 있다.
사진 및 내용 출처 : NEXT 공식문서 (https://nextjs.org)
'FrontEnd > NEXT' 카테고리의 다른 글
| Next 13 공식문서 읽기 (2) (0) | 2023.11.05 |
|---|---|
| Next 13 공식문서 읽기 (1) (0) | 2023.11.03 |