해당 글은 Next.js 공식문서를 해석한 글입니다.
학습하며 제가 이해한대로 작성한 내용이기 때문에 오해석한 부분이 있을 수 있습니다.
정확한 내용은 아래의 공식문서를 참고해주세요!
https://nextjs.org/docs/app/building-your-application/routing
모든 어플리케이션의 뼈대는 routing입니다.
이 글에서는 웹 라우팅의 기초 컨셉을 소개하고 Next에서는 라우팅을 어떻게 다루는지에 대한 내용을 다루었습니다.
용어
우선, 용어 소개를 간단하게 하고 넘어가겠습니다.
- Tree : 위계구조를 시각화하여 부르는 용어
- Subtree : tree의 일부분
- Root : tree 혹은 subtree에서 첫 번째 노드
- leaf : 자식 노드를 갖지 않은 노드
- URL Segment : 슬래시(/)에 의해 구분되는 url의 일부분
- URL Path : url segment의 묶음으로, 도메인 이후에 오는 url의 일부분
Route Segments
각 폴더는 route segment가 되고, 이는 url path에서 동일한 url segment가 됩니다.
예를 들어볼게요.
app(root segment) 폴더 하위에 dashboard(segment) 폴더가 있고, 그 하위에 settings(leaf segment) 폴더가 있다고 가정할 때,
app, dashboard, settings는 각각 url segment가 됩니다.
그리고 폴더구조 그대로 url path가 만들어지기 때문에, settings 페이지에 접근하기 위한 url path는 domain.com/dashboard/settings 이 됩니다.
File Convention
Next에는 특별한 파일 컨벤션이 있습니다. 이 컨벤션에 맞게 파일명을 설정하여 UI를 만듭니다.
- layout : 해당 segment와 leaf segment에서 공유하는 UI
- page : 해당 segment에 접근 가능하게 만드는 고유한 UI
- loading : 해당 segment와 하위 segment가 로딩중일 때 나타나는 UI
- not-found : 해당 segment와 하위 segment의 page가 없을때 나타나는 UI
- error : 해당 segment와 하위 segment에서 에러가 발생했을 때 나타나는 UI
- global-error : 전역 에러 UI
- route : 서버사이드 API 엔드포인트
- template : 반복적으로 사용되는 레이아웃 UI
- default : 대체(fallback) UI
컴포넌트 위계
앞서 말한 File Convention에 따른 파일들은 다음과 같은 순서에 따라 따라 리액트 컴포넌트가 생성됩니다.
- layout
- template
- error
- loading
- not-found
- page or nested layout
중접된 폴더로 라우트 구조를 만들었다면,
부모 segment(dashboard)의 컴포넌트 안에 하위 segment(settings)가 중첩됩니다.
'개발 > Next' 카테고리의 다른 글
[Next14] 검색 기능 만들기 with Supabase (0) | 2024.11.04 |
---|---|
[Next14] To Do List 만들기 with Supabase (2) Next API Route 사용하여 할 일 목록 구현하기 (2) | 2024.07.08 |
[Next14] To Do List 만들기 with Supabase (1) 프로젝트 세팅 (0) | 2024.07.07 |
[Next14] 페이지와 레이아웃 : Pages and Layouts (0) | 2024.05.26 |
[Next14] 라우트 정의하기 : Defining Routes (0) | 2024.05.26 |