Структура и организация проекта

Эта страница содержит обзор всех соглашений о папках и файлах в Next.js, а также рекомендации по организации вашего проекта.

Соглашения о папках и файлах

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

Папки верхнего уровня используются для организации кода приложения и статических ресурсов.

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

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

Файлы верхнего уровня используются для настройки приложения, управления зависимостями, запуска middleware, интеграции инструментов мониторинга и определения переменных окружения.

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.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Сегмент для всех путей
[[...folder]]/index.js .jsx .tsxОпциональный сегмент для всех путей
Соглашение о файлах
[file].js .jsx .tsxДинамический сегмент маршрута
[...file].js .jsx .tsxСегмент для всех путей
[[...file]].js .jsx .tsxОпциональный сегмент для всех путей