Структура проекта Next.js

Эта страница представляет обзор структуры файлов и папок проекта Next.js. Она охватывает файлы и папки верхнего уровня, файлы конфигурации и соглашения по маршрутизации в директориях app и pages.

Папки верхнего уровня

appРоутер приложения (App Router)
pagesРоутер страниц (Pages Router)
publicСтатические ресурсы для раздачи
srcОпциональная папка исходного кода

Файлы верхнего уровня

Next.js
next.config.jsФайл конфигурации Next.js
package.jsonЗависимости проекта и скрипты
instrumentation.tsФайл для OpenTelemetry и инструментирования
middleware.tsMiddleware-обработчики запросов Next.js
.envПеременные окружения
.env.localЛокальные переменные окружения
.env.productionПеременные окружения для production
.env.developmentПеременные окружения для development
.eslintrc.jsonФайл конфигурации ESLint
.gitignoreФайлы и папки для игнорирования в Git
next-env.d.tsФайл деклараций TypeScript для Next.js
tsconfig.jsonФайл конфигурации TypeScript
jsconfig.jsonФайл конфигурации JavaScript

Соглашения по маршрутизации в app

Файлы маршрутизации

layout.js .jsx .tsxМакет (Layout)
page.js .jsx .tsxСтраница
loading.js .jsx .tsxUI загрузки
not-found.js .jsx .tsxUI "Не найдено"
error.js .jsx .tsxUI ошибки
global-error.js .jsx .tsxГлобальный UI ошибки
route.js .tsAPI-эндпоинт
template.js .jsx .tsxПеререндеренный макет
default.js .jsx .tsxФолбэк-страница параллельного маршрута

Вложенные маршруты

folderСегмент маршрута
folder/folderВложенный сегмент маршрута

Динамические маршруты

[folder]Динамический сегмент маршрута
[...folder]Сегмент catch-all
[[...folder]]Опциональный сегмент catch-all

Группы маршрутов и приватные папки

(folder)Группировка маршрутов без влияния на маршрутизацию
_folderИсключение папки и дочерних сегментов из маршрутизации

Параллельные и перехватываемые маршруты

@folderИменованный слот
(.)folderПерехват на том же уровне
(..)folderПерехват на уровень выше
(..)(..)folderПерехват на два уровня выше
(...)folderПерехват из корня

Соглашения по файлам метаданных

Иконки приложения

favicon.icoФайл favicon
icon.ico .jpg .jpeg .png .svgФайл иконки приложения
icon.js .ts .tsxГенерируемая иконка
apple-icon.jpg .jpeg, .pngИконка для Apple
apple-icon.js .ts .tsxГенерируемая иконка Apple

Open Graph и Twitter изображения

opengraph-image.jpg .jpeg .png .gifФайл изображения Open Graph
opengraph-image.js .ts .tsxГенерируемое изображение Open Graph
twitter-image.jpg .jpeg .png .gifФайл изображения Twitter
twitter-image.js .ts .tsxГенерируемое изображение Twitter

SEO

sitemap.xmlФайл карты сайта
sitemap.js .tsГенерируемая карта сайта
robots.txtФайл robots.txt
robots.js .tsГенерируемый robots.txt

Соглашения по маршрутизации в pages

Специальные файлы

_app.js .jsx .tsxКастомное приложение
_document.js .jsx .tsxКастомный документ
_error.js .jsx .tsxКастомная страница ошибки
404.js .jsx .tsxСтраница 404 ошибки
500.js .jsx .tsxСтраница 500 ошибки

Маршруты

Соглашение по папкам
index.js .jsx .tsxГлавная страница
folder/index.js .jsx .tsxВложенная страница
Соглашение по файлам
index.js .jsx .tsxГлавная страница
file.js .jsx .tsxВложенная страница

Динамические маршруты

Соглашение по папкам
[folder]/index.js .jsx .tsxДинамический сегмент маршрута
[...folder]/index.js .jsx .tsxСегмент catch-all
[[...folder]]/index.js .jsx .tsxОпциональный сегмент catch-all
Соглашение по файлам
[file].js .jsx .tsxДинамический сегмент маршрута
[...file].js .jsx .tsxСегмент catch-all
[[...file]].js .jsx .tsxОпциональный сегмент catch-all