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

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

Нажмите на названия файлов и папок, чтобы узнать больше о каждом соглашении.

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

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

Сегменты маршрутов к сегментам путей
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

Следующие соглашения по файлам используются для определения маршрутов и обработки метаданных в app router.

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

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 endpoint
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

Следующие соглашения по файлам используются для определения маршрутов в pages router.

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

_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"