Skip to content
Русский
Назад в каталог

nextjs.org

200 OK

Next.js добавляет в React маршрутизацию, рендеринг и серверные возможности

Developer ToolsGoogle AnalyticsNext.jsReact
Краткий ответ

Next.js — это React-фреймворк для создания полнофункциональных веб-приложений с маршрутизацией, серверными возможностями, несколькими стратегиями рендеринга и точечной интерактивностью в браузере. Он может обслуживать статический контент и приложения, формируемые на основе запросов, но подходящая архитектура зависит от данных, кэширования, среды выполнения и клиентских требований каждого маршрута.

Последняя проверка:

Основные понятия

  • Полнофункциональный React-фреймворк: Next.js добавляет к React-компонентам маршрутизацию приложения, рендеринг, серверные возможности, соглашения о кэшировании, компиляцию и сборку.

  • App Router с приоритетом сервера: Макеты и страницы App Router по умолчанию являются Server Components, а Client Components обеспечивают состояние браузера, события, эффекты и API, доступные только в браузере.

  • Отдельная доставка для каждого маршрута: Маршруты можно предварительно рендерить, динамически формировать, кэшировать или ревалидировать в соответствии с их входными данными и требованиями к актуальности.

  • Статический экспорт с ограничениями: Проекты без требований к серверным возможностям можно экспортировать в виде статических файлов, а для возможностей, зависящих от среды выполнения, требуется совместимая серверная поддержка.

  • Конечные точки приложения: Route Handlers в App Router могут обрабатывать HTTP-запросы рядом с приложением, хотя обычные обязанности по безопасности и эксплуатации API по-прежнему сохраняются.

  • Два поддерживаемых маршрутизатора: Документированы как новый App Router, так и устоявшийся Pages Router, но их модели компонентов, данных и маршрутизации не следует считать взаимозаменяемыми.

  • Измеряемые компромиссы: Командам следует проверять клиентский JavaScript, кэширование, совместимость развертывания, актуальность и работу среды выполнения на репрезентативных маршрутах, а не предполагать результаты.

Compare the subject with other published sites in the same category.

All alternatives

Next.js добавляет в React маршрутизацию, рендеринг и серверные возможности

Next.js — это React-фреймворк для создания полнофункциональных веб-приложений. React предоставляет компонентную модель для пользовательских интерфейсов; Next.js добавляет маршрутизацию, рендеринг, соглашения о доступе к данным, серверные возможности, компиляцию, сборку, кэширование и инструменты, ориентированные на эксплуатацию.

Основная тема — сам фреймворк, а не его домен. nextjs.org — официальный сайт, где посетители могут найти поддерживаемую документацию, руководства, ссылки на сообщество и информацию о проекте.

Next.js особенно актуален, когда команда хочет разрабатывать с помощью React, не ограничиваясь интерфейсом, работающим только в браузере. Один проект может содержать предварительно отрендеренные страницы, ответы, формируемые во время запроса, серверный доступ к данным, конечные точки в стиле API и интерактивные компоненты, работающие в браузере.

Что Next.js добавляет к React

React помогает разработчикам описывать интерфейсы как компоненты, но не предписывает полную архитектуру приложения. Next.js предоставляет соглашения для сопоставления файлов с маршрутами, определения места выполнения кода, загрузки данных, формирования ответов и подготовки приложения к развертыванию.

Поэтому его ценность не ограничивается серверным рендерингом. Приложение Next.js может использовать несколько методов рендеринга и доставки, иногда в рамках одного проекта. Фреймворк координирует эти методы вокруг React, а не вынуждает каждый маршрут следовать одной модели.

Полезно представить это разделение так:

  • React определяет компоненты, состояние, свойства и композицию интерфейса.
  • Next.js определяет маршруты, макеты, варианты рендеринга, серверные точки входа и поведение сборки.
  • Приложение определяет правила работы с данными, клиентские границы, политику кэширования и требования к развертыванию.
  • Среда хостинга определяет, какие возможности среды выполнения доступны и как они работают.

Это разделение важно при сравнении Next.js с клиентским React-приложением, генератором статических сайтов или другим веб-фреймворком. Фреймворк предлагает широкий спектр возможностей, но проект получает пользу только от тех из них, которые использует правильно.

Серверные и клиентские компоненты

В App Router макеты и страницы по умолчанию являются Server Components. Server Components выполняются в серверной среде и могут работать с данными на стороне сервера, не отправляя реализацию своих компонентов в браузер.

Client Components используются, когда части интерфейса требуются состояние браузера, обработчики событий, эффекты или API, доступные только в браузере. Разработчики обозначают клиентскую границу директивой use client, после чего расположенные ниже нее компоненты становятся частью графа клиентских модулей.

Вопрос Server Component Client Component
Где выполняется логика его компонента? В среде серверного рендеринга В браузере после включения в клиентский пакет
Может ли он использовать состояние браузера или обработчики нажатий? Нет Да
Может ли он напрямую использовать API, доступные только в браузере? Нет Да
Отправляется ли код его компонента в браузер? Не в виде кода клиентского компонента Да
Типичная роль Контент на основе данных, макеты и серверная композиция Формы, меню, редакторы, фильтры и другие интерактивные элементы управления

Маршрут не обязан выбирать исключительно один тип. Server Component может отображать контент и компоновать выбранные Client Components для интерактивных частей страницы. Это позволяет командам добавлять браузерный JavaScript для конкретных потребностей, а не рассматривать весь маршрут как клиентское приложение.

Граница все же требует внимания. Перенос большого поддерева компонентов за use client может привести к отправке в браузер большего объема JavaScript, а выделение каждого небольшого элемента управления в отдельную границу может затруднить понимание кода. Следует измерять показатели репрезентативных страниц, а не судить только по названию фреймворка.

Server Components также отличаются от стратегии доставки маршрута. Server Component может участвовать в формировании предварительно отрендеренного результата или в динамическом рендеринге. Определение компонента как серверного само по себе не указывает, создается ли маршрут во время сборки, обновляется позднее или формируется для каждого запроса.

App Router и Pages Router

В текущей документации Next.js описаны две системы маршрутизации. App Router — более новая система, включающая такие возможности React, как Server Components. Pages Router — более старая система, которая продолжает поддерживаться.

Область App Router Pages Router
Основная структура маршрутов Каталог app Каталог pages
Модель компонентов по умолчанию Макеты и страницы являются Server Components Использует более раннюю модель страниц Next.js
Общий пользовательский интерфейс Вложенные макеты являются центральным соглашением Обычно компонуется с помощью шаблонов приложения и страниц
Оптимальная отправная точка Новые проекты, использующие текущую архитектуру Существующие приложения или зависимости, построенные вокруг API Pages Router

Миграция — это не просто переименование папок. Код App Router вводит ориентированную прежде всего на сервер компонентную модель и другие шаблоны для макетов, доступа к данным, состояний загрузки и поведения маршрутов. Командам следует определить эти концептуальные изменения до преобразования зрелого приложения.

Новым проектам обычно следует сначала изучить документацию App Router, поскольку она объясняет текущую модель фреймворка. Существующим приложениям на Pages Router следует оценивать миграцию с учетом реальных преимуществ, зависимостей, трудозатрат на тестирование и стоимости сопровождения, а не воспринимать продолжающуюся поддержку как недостаток.

Документация и примеры могут быть предназначены только для одного маршрутизатора. Перед копированием реализации разработчикам следует проверить, какой маршрутизатор в ней используется и применимы ли упомянутые API к их проекту.

Рендеринг, кэширование и ревалидация

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

Потребность маршрута Вероятный подход к доставке Что нужно проверить
Входные данные известны заранее Предварительно отрендеренный результат Какое событие должно приводить к изменению результата?
Результат зависит от файлов cookie, заголовков или данных запроса Динамический рендеринг Можно ли безопасно кэшировать хотя бы часть работы?
Контент изменяется по контролируемому расписанию Закэшированный результат с ревалидацией Насколько устаревшим может становиться ответ?
Возможности, доступные только на сервере, не требуются Может подойти статический экспорт Совместимы ли все маршруты и ресурсы с ограничениями экспорта?

Кэширование — это не единый переключатель, который можно рассматривать независимо от доступа к данным. Командам необходимо знать, какие операции кэшируются, какие маршруты становятся динамическими и как происходит инвалидация или ревалидация. Эти правила следует проверять с помощью реалистичных изменений контента.

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

Производительность и видимость в поиске не следует выводить только из обозначения типа рендеринга. Предварительный рендеринг может сократить объем работы во время запроса, а серверный рендеринг может предоставить содержательный исходный HTML, но фактические результаты зависят от структуры страницы, ресурсов, задержки данных, браузерного JavaScript, кэширования и поведения при развертывании.

Статический экспорт и требования к среде выполнения

Next.js может создавать статический экспорт, если проект не зависит от серверных возможностей фреймворка. Полученные HTML, CSS, JavaScript и ресурсы могут обслуживаться инфраструктурой, поддерживающей обычные статические файлы.

Статический результат все равно может включать Client Components. Статическая доставка описывает способ размещения собранного результата; она не означает, что каждый интерфейс должен быть неинтерактивным. Код на стороне браузера по-прежнему может обеспечивать состояние, события и другое клиентское поведение.

Перед выбором статического экспорта убедитесь, что проекту не требуются:

  • Ответы, формируемые из серверных данных конкретного запроса.
  • Поведение маршрутов, зависящее от активной среды выполнения Next.js.
  • Неподдерживаемые возможности для изображений, маршрутизации или сервера.
  • Правила актуальности, которые невозможно соблюдать посредством повторной сборки или другого поддерживаемого процесса обновления.
  • Серверные конечные точки, которые должны выполняться вместе с приложением.

Когда эти возможности необходимы, приложению требуется совместимая среда выполнения. Это не требует развертывания на Vercel: официальное руководство по развертыванию описывает самостоятельный хостинг и адаптеры платформ. Поддержка различается в зависимости от платформы, поэтому совместимость следует проверять для конкретных используемых возможностей.

Route Handlers и серверные конечные точки

В App Router Route Handlers позволяют приложению определять обработчики HTTP-запросов с использованием стандартных концепций запросов и ответов. Они полезны для конечных точек, которые логично размещать рядом с приложением, включая обработку форм, вебхуки, ответы с данными или обратные вызовы интеграций.

Route Handler не становится автоматически подходящим местом для каждой серверной системы. Командам все равно следует определить, как будут управляться аутентификация, авторизация, валидация, ограничение частоты запросов, надежно выполняемая работа и обработка ошибок. Длительно выполняемые или независимо масштабируемые сервисы может быть лучше отделить от веб-приложения.

Практическая проверка включает следующие вопросы:

  1. Нужен ли конечной точке доступ к коду приложения или общим типам?
  2. Требуются ли ей секреты во время запроса или зависимости, доступные только на сервере?
  3. Может ли целевая среда развертывания выполнять обработчик согласно документации?
  4. Какое поведение кэширования является правильным для каждого HTTP-метода и ответа?
  5. Обеспечит ли отдельный сервис более понятное распределение ответственности или масштабирование?

Route Handlers делают полнофункциональную композицию удобной, но удобство не отменяет обычных обязанностей по проектированию и защите API.

Когда Next.js является практичным выбором

Next.js — сильный кандидат для команд, уже уверенно работающих с React и нуждающихся в маршрутизации приложения и серверных возможностях в одной кодовой базе. Он также может подойти продуктам, в которых разные маршруты имеют существенно отличающиеся требования к доставке.

Распространенные варианты применения:

  • Разделы учетных записей и панели управления с серверными данными и интерактивными элементами управления.
  • Коммерческие интерфейсы или каталоги, сочетающие стабильный контент с информацией, зависящей от запроса.
  • Документационные или маркетинговые сайты, которые также содержат рабочие процессы приложения.
  • Продукты, которым одновременно нужны HTML-ответы, клиентское взаимодействие и серверные конечные точки.
  • React-приложения, маршрутам которых полезны отдельные политики кэширования и рендеринга.

Фреймворк может оказаться избыточным для простого контентного сайта. Команде, публикующей преимущественно статические статьи, следует сравнить свои потребности с инструментами, ориентированными на доставку контента, особенно если взаимодействие через React требуется лишь небольшой части сайта.

Next.js также может оказаться неудачным выбором, если команда не может обеспечить требования к среде выполнения, не хочет использовать специфические для фреймворка концепции рендеринга или не сможет поддерживать четкие серверные и клиентские границы. Гибкость ценна только тогда, когда архитектура остается понятной.

Сравнение Next.js с Astro и другими вариантами

Next.js и Astro часто рассматриваются для проектов, сочетающих контент с интерактивными элементами, но их настройки по умолчанию и ментальные модели различаются. Подходящий выбор зависит от реальных маршрутов, а не от общего утверждения, что один фреймворк быстрее или лучше.

Для полезного сравнения создайте одну и ту же репрезентативную страницу в каждом рассматриваемом варианте и зафиксируйте:

  • Какой объем JavaScript поступает в браузер до и после взаимодействия.
  • Как загружаются данные и как контролируется их актуальность.
  • Требуются ли возможности серверной среды выполнения.
  • Как реализованы маршрутизация, макеты, формы и состояния ошибок.
  • Поддерживает ли целевой хост все необходимые возможности.
  • Насколько легко команда может тестировать и объяснять получившуюся архитектуру.

Astro заслуживает особого внимания для сайтов, ориентированных на контент, где большая часть результата может оставаться статической, а количество интерактивных островков ограничено. Next.js становится более привлекательным, когда React является центральной моделью приложения, а серверные и клиентские возможности необходимо компоновать по всему продукту.

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

Происхождение, управление и сообщество

На официальной странице управления указано, что команда Vercel создала Next.js в 2016 году. Там также сказано, что основная команда Vercel руководит исследованиями и разработкой проекта. Это утверждение о происхождении и управлении на уровне команды; его не следует заменять неподтвержденным утверждением об отдельном основателе.

Согласно страницам управления и документации, доступным 27 августа 2026 года, публичные способы участия в проекте включают:

  • Официальный репозиторий GitHub с исходным кодом, задачами и активностью проекта.
  • GitHub Discussions для вопросов и общественного обсуждения RFC.
  • Next.js Discord для бесплатной поддержки сообщества.
  • Поддерживаемую документацию как для App Router, так и для Pages Router.

Эти каналы предоставляют разные виды помощи. Документация должна быть первым источником сведений о поведении фреймворка, Discussions может отражать предложения и общие вопросы, а Discord может поддерживать общение сообщества. Ни один из них не заменяет тестирование конкретного проекта или собственный процесс производственной поддержки команды.

Контрольный список для принятия решения

Прежде чем внедрять Next.js, команды должны ответить на эти вопросы с помощью рабочего прототипа:

  • Какие маршруты являются статическими, динамическими, кэшируемыми или ревалидируемыми?
  • Каким компонентам действительно требуются состояние, эффекты, события или браузерные API?
  • Какой объем клиентского JavaScript отправляет каждый репрезентативный маршрут?
  • Какие конечные точки следует разместить в Route Handlers, а какие — в другом месте?
  • Может ли целевая платформа выполнять все необходимые возможности Next.js?
  • Как будут управляться актуальность кэша, сбои, журналы и развертывания?
  • Понимает ли команда различия между выбранным маршрутизатором и примерами, написанными для другого маршрутизатора?

Суть Next.js заключается в применении React ко всему веб-приложению с осознанным выбором того, где выполняется работа и как доставляется каждый маршрут. Его документированная гибкость значительна, но она не гарантирует производительность, результаты поиска, низкие эксплуатационные расходы или простоту архитектуры. Эти результаты необходимо подтверждать реализацией и измерениями.

Успешный ответ не гарантирует безопасность. Измерения отражают одно наблюдение в определённый момент времени.

Основные источники

  1. 01Документация Next.js (откроется в новой вкладке)
  2. 02Server Components и Client Components в Next.js (откроется в новой вкладке)
  3. 03Руководство по развертыванию Next.js (откроется в новой вкладке)
  4. 04Руководство по статическому экспорту Next.js (откроется в новой вкладке)
  5. 05Справочник по React Server Components (откроется в новой вкладке)
  6. 06Официальный репозиторий Next.js (откроется в новой вкладке)
  7. 07Управление Next.js (откроется в новой вкладке)
  8. 08Обсуждения Next.js на GitHub (откроется в новой вкладке)
  9. 09Next.js Discord (откроется в новой вкладке)

Частые вопросы

Практические ответы о продукте и принципах его работы.

Что такое Next.js и как он связан с React?

Next.js — это фреймворк для создания полнофункциональных веб-приложений с помощью React. React предоставляет компонентную модель, а Next.js добавляет маршрутизацию, рендеринг, серверные возможности, соглашения о кэшировании, компиляцию, сборку и инструменты, ориентированные на развертывание.

В чем разница между Server Components и Client Components?

В App Router макеты и страницы по умолчанию являются Server Components, и код их компонентов не отправляется в браузер как клиентский код. Client Components используются для состояния, обработчиков событий, эффектов и API, доступных только в браузере. Один маршрут может сочетать компоненты обоих типов.

Может ли Next.js создать полностью статический сайт?

Да. Next.js поддерживает статический экспорт для проектов, которым не требуются серверные возможности фреймворка. Экспортированные страницы по-прежнему могут содержать Client Components для взаимодействия в браузере, но для возможностей, работающих во время запроса, требуется совместимая среда выполнения.

Использует ли каждая страница Next.js серверный рендеринг?

Нет. Маршруты могут быть предварительно отрендерены, динамически сформированы на основе данных конкретного запроса, закэшированы или ревалидированы. Server Components описывают, где выполняется логика компонента; сами по себе они не определяют, когда формируется результат маршрута.

Обязательно ли развертывать приложение Next.js на Vercel?

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

В чем разница между App Router и Pages Router?

App Router — более новая модель, в которой макеты и страницы по умолчанию используют Server Components. Pages Router следует более ранней модели страниц Next.js и продолжает поддерживаться. Следует проверять, для какого маршрутизатора предназначены руководства и примеры.

Что следует проверить команде перед выбором Next.js?

Создайте репрезентативный маршрут с реальными данными и взаимодействием. Проверьте границы Server Components и Client Components, браузерный JavaScript, поведение рендеринга и кэша, требования Route Handlers, совместимость развертывания, правила актуальности и эксплуатационные обязанности.

Continue exploring

More published records in Developer Tools.

View all alternatives

Как Astro преобразует контент в HTML и выборочно добавляет интерактивность

Developer ToolsTailwind CSS

Gatsby связывает сайты на React со структурированным контентом и гибким рендерингом

Developer ToolsGoogle Analytics

nuxt.com

200 OK

Создавайте сайты и приложения на Vue с маршрутизацией, серверной логикой и гибким рендерингом

Developer ToolsNuxtVercel