Что такое Next.js? Простое руководство для создателей приложений
Next.js — фреймворк для создания сайтов и веб-приложений на React. React даёт строительные блоки интерфейса: кнопки, формы, списки. Next.js добавляет вокруг них остальную часть сайта: страницы и адреса, рендеринг страниц на сервере, чтобы они приходили уже готовыми к чтению, загрузку данных и запуск серверного кода в том же проекте. Это открытое программное обеспечение, созданное компанией Vercel, и один из самых распространённых способов создавать сайты на React.
Почему Next.js важен при создании приложений с ИИ
Когда вы описываете приложение конструктору с ИИ, ему нужно выбрать техническую основу. Этот выбор влияет на то, что вам важно потом:
- Видимость в поиске. Публичный сайт, который должен попадать в выдачу Google, выигрывает от отправки настоящего HTML, а Next.js с этим хорошо справляется.
- Где живёт бэкенд. Next.js позволяет держать страницы фронтенда и серверный код (например, «сохранить эту форму» или «вызвать платёжный API») в одном проекте.
- Хостинг. Приложению на Next.js с серверными функциями нужен сервер для работы, а простое приложение на Vite можно раздавать как статические файлы.
Mythex по умолчанию создаёт новые проекты на Vite + React + TypeScript + Tailwind и использует Next.js, если вы его попросите: достаточно написать «Используй Next.js» в первом запросе (как выбирается технология). Поэтому полезно знать, когда стоит это просить.
Бытовая аналогия
Если React — коробка качественных кубиков Lego, то Next.js — это набор Lego, в который уже входят инструкция, основание и детали для дверей и водопровода.
Вы могли бы построить тот же дом из отдельных кубиков — только сами решали бы, как соединяются комнаты, где входная дверь и как проведена вода. Next.js принимает эти решения за вас стандартным способом, поэтому каждый проект на Next.js устроен похоже, и новому разработчику (или ИИ) легко в нём разобраться.
Что Next.js добавляет к React
| Возможность | Что это значит для вас |
|---|---|
| Маршрутизация по файлам | Каждая страница — это файл. Файл app/pricing/page.tsx становится страницей /pricing. Никакой дополнительной настройки. |
| Серверный рендеринг | Страницы могут собираться в HTML на сервере для каждого запроса, поэтому появляются быстро, и поисковики их читают. |
| Статическая генерация | Страницы, которые редко меняются, собираются заранее и отдаются очень быстро. |
| Серверные компоненты (Server Components) | Части страницы могут работать только на сервере — читать базу данных напрямую — и отправлять в браузер готовый HTML, а не код. |
| Обработчики маршрутов и серверные действия | Серверный код, например эндпоинт API или обработчик формы, живёт в том же проекте, что и страницы. |
| Встроенные оптимизации | Изменение размера изображений, загрузка шрифтов и разбиение кода выполняются автоматически. |
У Next.js два способа организации страниц. App Router (папка app/) — более новый и поддерживает серверные компоненты. Pages Router (папка pages/) — исходный, он по-прежнему поддерживается. В новых проектах обычно используют App Router. Если код вашего ИИ-конструктора или туториал выглядит непонятно, часто причина именно в этом.
Пример: публичный каталог местных кофеен
Представьте сайт со списком кофеен вашего города, где у каждой есть своя страница и который должен попадать в результаты поиска.
Страница Next.js для одной кофейни может выглядеть примерно так:
// app/cafes/[slug]/page.tsx → /cafes/blue-door, /cafes/hilltop ...
export default async function CafePage({ params }) {
const { slug } = await params;
const cafe = await db.cafe.findUnique({ where: { slug } });
return (
<main>
<h1>{cafe.name}</h1>
<p>{cafe.address}</p>
</main>
);
}
Что происходит, когда кто-то (или Google) открывает /cafes/blue-door:
- Next.js сопоставляет адрес с файлом. Папка
[slug]означает «любая кофейня». - Компонент работает на сервере, читает кофейню из базы данных и собирает HTML.
- Браузер получает полностью готовую страницу с названием и адресом кофейни — без ожидания, пока JavaScript загрузит данные.
Если бы это было обычное клиентское React-приложение, браузер сначала получил бы почти пустую страницу, потом скачал бы JavaScript, затем запросил бы кофейню и только после этого показал её. Поисковики часто справляются и с этим, но полностью готовая страница надёжнее. См. SEO для сайтов, созданных с ИИ.
Сравните с панелью для сотрудников за входом: поисковики всё равно её не увидят, поэтому серверный рендеринг даёт меньше пользы, и более простое приложение на Vite часто подходит лучше.
Ключевые термины
| Термин | Значение |
|---|---|
| Фреймворк | Структура с соглашениями, которая определяет, как организовано приложение. Next.js — фреймворк; React — библиотека. |
| SSR (серверный рендеринг) | Сборка HTML страницы на сервере при каждом визите. |
| SSG (статическая генерация) | Сборка страниц в HTML заранее, при развёртывании. |
| CSR (клиентский рендеринг) | Браузер собирает страницу с помощью JavaScript после загрузки. Так обычно работает приложение Vite + React. |
| SPA (одностраничное приложение) | Приложение, которое загружается один раз и меняет экраны в браузере без полной перезагрузки страницы. |
| Гидратация (hydration) | Браузер «оживляет» HTML от сервера, чтобы кнопки и формы стали интерактивными. |
| Маршрут (route) | Путь в адресе, например /pricing, и код, который на него отвечает. |
Частые заблуждения
- «Next.js заменяет React». Нет. Он использует React. Ваши компоненты по-прежнему компоненты React.
- «Next.js всегда лучший выбор». Он мощнее, но его и сложнее понять. Серверный рендеринг, кеширование и разница между серверным и клиентским кодом — частые источники запутанных ошибок. Для приложения, которое в основном за входом, обычное React-приложение часто проще.
- «Next.js работает только на Vercel». Он открытый и может работать на любом сервере Node.js или в контейнере Docker. Полный статический экспорт возможен, если не использовать серверные функции.
- «Next.js гарантирует хороший SEO». Он делает страницы удобнее для чтения поисковиками. Позиции по-прежнему зависят от заголовков, содержимого, скорости и ссылок.
- «Серверный код в Next.js автоматически приватный». Код, помеченный для клиента, попадает в браузер. Секреты должны оставаться в коде только для сервера и в переменных окружения.
Что попросить у конструктора ИИ
- «Используй Next.js с App Router» — в первом запросе, если это нужно.
- «Какие страницы рендерятся на сервере, какие статические, а какие работают в браузере — и почему?»
- «Сделай публичные маркетинговые страницы и страницы списков серверными или статическими, с нормальными заголовками и описаниями.»
- «Храни API-ключи в коде только для сервера и в переменных окружения. Покажи, где читается каждый из них.»
- «Нужен ли этому приложению Next.js, или для того, что мы строим, проще подойдёт Vite + React?»
Next.js в Mythex
Mythex по умолчанию использует Vite + React + TypeScript + Tailwind, а переходит на Next.js, когда вы попросите об этом в запросе; если назвать его сразу, это экономит кредиты по сравнению с переделкой позже. Приложение вы видите в живом предпросмотре (Preview), а Publish публикует его по живому адресу без настройки хостинга самостоятельно. В документации Mythex отмечено, что клиентские одностраничные приложения хуже подходят для SEO, чем страницы с серверным рендерингом или статические HTML, поэтому, если для маркетингового сайта важен поиск, стоит сказать об этом заранее (SEO для вашего приложения).
Вопросы
Что такое Next.js простыми словами?
Next.js — фреймворк, построенный поверх React. React создаёт компоненты интерфейса; Next.js добавляет остальную часть сайта вокруг них — страницы и адреса, рендеринг на сервере, загрузку данных и серверный код — чтобы вы могли создать полноценное веб-приложение в одном проекте.
В чём разница между React и Next.js?
React — библиотека для создания компонентов интерфейса. Next.js — фреймворк, который использует React и добавляет маршрутизацию, серверный рендеринг, статические страницы и серверный код. Каждое приложение на Next.js — это приложение на React, но не каждое приложение на React использует Next.js.
Next.js лучше для SEO?
Может быть. Next.js может отдавать поисковикам и посетителям полностью готовый HTML с сервера или из заранее собранных статических страниц, тогда как обычное клиентское React-приложение отдаёт почти пустую страницу, которую затем заполняет JavaScript. Хорошие заголовки, описания и содержимое всё равно важнее фреймворка.
Нужен ли Vercel, чтобы использовать Next.js?
Нет. Next.js — открытое программное обеспечение, созданное Vercel, но он может работать на любом сервере с Node.js, в контейнере Docker или как статический экспорт для сайтов, которым не нужны серверные функции. Некоторые возможности проще настроить на Vercel.
Что выбрать для приложения: Next.js или Vite?
Для приложения с входом, например панели управления или внутреннего инструмента, проще и удобнее работает Vite + React. Next.js стоит использовать, когда нужно, чтобы поисковики легко читали контент, есть много публичных страниц или нужны страницы с серверным рендерингом в том же проекте, что и серверный код.