Документированная архитектура Next.js
Next.js построен вокруг React и предоставляет слой фреймворка для маршрутизации, рендеринга, доступа к данным, серверных конечных точек, компиляции и сборки. Это описывает публичную программную модель, документированную для приложений; оно не раскрывает закрытую инфраструктуру, используемую для работы nextjs.org.
В App Router дерево маршрутов организуется с помощью файлов страниц, макетов, состояний загрузки, ошибок и связанного поведения. Макеты и страницы по умолчанию являются Server Components. Client Components определяют выполняемые в браузере поддеревья для состояния, обработчиков событий, эффектов и API, доступных только в браузере.
Публичные слои фреймворка
| Слой | Документированная ответственность |
|---|---|
| React-компоненты | Компонуют пользовательский интерфейс и определяют деревья серверных или клиентских компонентов |
| App Router или Pages Router | Сопоставляют структуру приложения с маршрутами, используя разные модели Next.js |
| Система рендеринга | Формирует предварительно отрендеренный результат или результат во время запроса и при необходимости координирует потоковую передачу |
| Кэширование и ревалидация | Управляют повторным использованием и актуальностью в соответствии с поведением маршрутов и данных |
| Route Handlers | Реализуют HTTP-конечные точки внутри приложения App Router |
| Инструменты сборки | Компилируют и объединяют код приложения и ресурсы для поддерживаемых сред развертывания |
Маршрут Next.js может включать отрендеренный на сервере контент и точечное клиентское взаимодействие. Наличие Client Component не превращает каждый родительский компонент в приложение, отрендеренное в браузере, хотя выбранная клиентская граница влияет на то, какие модули включаются для браузера.
Варианты доставки
- Статический экспорт создает файлы для проектов, которым не нужны неподдерживаемые серверные возможности.
- Предварительный рендеринг подготавливает результат маршрута до отдельного запроса.
- Динамический рендеринг формирует результат с использованием информации, доступной во время запроса.
- Кэширование и ревалидация управляют повторным использованием и актуальностью между этими крайними вариантами.
- Для поведения во время запроса и другого поведения, зависящего от сервера, требуется совместимая среда выполнения.
Официальное руководство по развертыванию описывает самостоятельный хостинг и адаптеры платформ, поэтому Vercel не является техническим требованием для каждого приложения Next.js. Набор поддерживаемых возможностей может различаться в разных средах. Командам следует проверять маршрутизацию, кэширование, обработку изображений, ревалидацию, потоковую передачу и Route Handlers для выбранной цели, а не делать вывод о совместимости на основании успешной сборки.
