Nextjs 14 프로젝트 구조 완벽 이해하기 필수 가이드

Nextjs 14 프로젝트 구조 완벽 이해하기 필수 가이드
Cozy CodingPosted On Jul 23, 20248 min read

Next.js 프로젝트 구조

이 페이지는 Next.js 애플리케이션의 프로젝트 구조에 대한 개요를 제공합니다. 이는 최상위 파일 및 폴더, 설정 파일 및 앱 및 페이지 디렉토리 내의 라우팅 규칙을 다룹니다.

각 규칙에 대해 자세히 알아보기 위해 파일 및 폴더 이름을 클릭하세요.

최상위 폴더

Top-level 폴더는 애플리케이션의 코드와 정적 자산을 구성하는 데 사용됩니다.

이미지

폴더설명
app앱 라우터
pages페이지 라우터
public제공될 정적 자산
src선택 사항 애플리케이션 소스 폴더

최상위 파일

최상위 파일은 애플리케이션을 구성, 의존성을 관리, 미들웨어를 실행, 모니터링 도구를 통합하고 환경 변수를 정의하는 데 사용됩니다.

Markdown 형식으로 표를 변경하였습니다.

앱 라우팅 규칙

다음 파일 규칙은 앱 라우터에서 경로를 정의하고 메타데이터를 처리하는 데 사용됩니다.

라우팅 파일

이름확장자설명
layout.js .jsx .tsx레이아웃
page.js .jsx .tsx페이지
loading.js .jsx .tsx로딩 UI
not-found.js .jsx .tsx찾을 수 없음 UI
error.js .jsx .tsx오류 UI
global-error.js .jsx .tsx전역 오류 UI
route.js .tsAPI 엔드포인트
template.js .jsx .tsx재렌더된 레이아웃
default.js .jsx .tsx병렬 라우트 펄백 페이지

중첩 라우트

폴더설명
folder라우트 세그먼트
folder/folder중첩된 라우트 세그먼트

동적 라우트

folder동적 라우트 세그먼트
...folder모든 라우트 세그먼트 캐치
[...folder]선택적 모든 라우트 세그먼트 캐치

라우트 그룹 및 프라이빗 폴더

(folder)(/docs/app/building-your-application/routing/route-groups#convention)라우팅에 영향을 미치지 않은 라우트 그룹
_folder(/docs/app/building-your-application/routing/colocation#private-folders)폴더 및 모든 하위 세그먼트를 라우팅에서 제외하는 폴더

병렬 및 가로막는 라우트

기호용도
@folder이름있는 슬롯
(.)folder동일한 수준 가로막기
(..)folder한 수준 위 가로막기
(..)(..)folder두 수준 위 가로막기
(...)folder루트부터 가로막기

메타데이터 파일 관례

앱 아이콘

아래는 Markdown 형식으로 표가 변경되었습니다.

Open Graph 및 Twitter 이미지

사용법확장자설명
opengraph-image.jpg .jpeg .png .gifOpen Graph 이미지 파일
opengraph-image.js .ts .tsx생성된 Open Graph 이미지
twitter-image.jpg .jpeg .png .gifTwitter 이미지 파일
twitter-image.js .ts .tsx생성된 Twitter 이미지

SEO

이름확장자설명
sitemap.xml사이트맵 파일
sitemap.js .ts생성된 사이트맵
robots.txt로봇 파일
robots.js .ts생성된 로봇 파일

페이지 라우팅 규칙

다음 파일 규칙은 페이지 라우터에서 경로를 정의하는 데 사용됩니다.

특수 파일

라우트

폴더 규칙
index.js .jsx .tsx홈페이지
folder/index.js .jsx .tsx중첩 페이지
파일 규칙
index.js .jsx .tsx홈페이지
file.js .jsx .tsx중첩 페이지

동적 라우트

Folder convention
[folder]/index .js .jsx .tsxDynamic route segment
[folder]/index.js .jsx .tsxCatch-all route segment
[[...folder]]/index.js .jsx .tsxOptional catch-all route segment
File convention
[file].js .jsx .tsxDynamic route segment
[[...file]].js .jsx .tsxCatch-all route segment
[[...file]].js .jsx .tsxOptional catch-all route segment