Учебник Next.js для начинающих
Next.js — самый популярный фреймворк поверх React для создания быстрых, дружелюбных к SEO fullstack-приложений. Курс рассчитан на тех, кто уже знает React (компоненты, пропсы, состояние, хуки) и хочет научиться строить настоящие сайты. Главный упор — на ключевое отличие от обычного React: серверные компоненты по умолчанию и стратегии рендеринга (SSR, SSG, ISR). Вы освоите App Router и файловую маршрутизацию, вложенные layout и динамические сегменты, получение данных через fetch с кэшированием, метаданные для SEO, серверные действия (Server Actions) и обработчики маршрутов, стилизацию и оптимизацию изображений и шрифтов, а в конце соберёте мини-блог и задеплоите его на Vercel. Pages Router упомянут кратко — для совместимости. Примеры корректны: интерактивные блоки на чистом JavaScript можно запускать прямо в браузере, а серверный код помечен как нерабочий для запуска и служит образцом.
Курс «Next.js» состоит из 6 разделов и 22 уроков: Введение в Next.js, Маршрутизация в App Router, Рендеринг и компоненты, Данные и серверная логика, Стилизация и оптимизация и Практика и деплой. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение в Next.js
- Что такое Next.js и зачем он поверх React
Next.js — фреймворк над React: серверный рендеринг, файловая маршрутизация, оптимизации и fullstack-возможности. Разбираем, какие проблемы он решает.
- Создание проекта: create-next-app
Запускаем create-next-app, разбираем флаги и зависимости. Как поднять dev-сервер и открыть первую страницу Next.js на localhost:3000.
- Структура проекта: app/ и public/
Разбираем папки нового проекта Next.js: app/ с маршрутами, public/ для статики, next.config и служебные файлы. Что где лежит и зачем.
- App Router и Pages Router: обзор
Два подхода к маршрутизации в Next.js: современный App Router (app/) и классический Pages Router (pages/). В чём разница и что выбирать.
- Что такое Next.js и зачем он поверх React
2 Маршрутизация в App Router
- Файловая маршрутизация, page.js и layout.js
Папки в app/ становятся URL, page.js делает сегмент страницей, а layout.js задаёт общий каркас и сохраняется между переходами. Основа App Router.
- Динамические маршруты: [id] и params
Папка [id] делает сегмент маршрута динамическим. Как получить значение из URL через params и сгенерировать страницы для списка элементов.
- Навигация: Link и useRouter
Компонент Link для переходов без перезагрузки и хук useRouter для программной навигации. Почему обычный <a> в Next.js — не лучший выбор.
- Загрузка, ошибки и группы маршрутов
Файлы loading.js и error.js дают встроенные состояния загрузки и ошибки для сегмента. Группы маршрутов (folder) организуют структуру без влияния на URL.
- Файловая маршрутизация, page.js и layout.js
3 Рендеринг и компоненты
- Серверные компоненты по умолчанию
В App Router компоненты по умолчанию серверные: они выполняются на сервере, не уезжают в браузер и могут напрямую обращаться к данным. Ключевая идея Next.js.
- Клиентские компоненты: 'use client'
Директива 'use client' превращает компонент в клиентский: появляются состояние, эффекты и обработчики. Когда она нужна и как сочетать с серверными.
- Стратегии рендеринга и получение данных
SSG, SSR и ISR — три способа отдать страницу. Данные грузят обычным fetch в серверном компоненте, а опции кэша (no-store, revalidate) и определяют стратегию.
- Метаданные и SEO: generateMetadata
Экспорт metadata и функция generateMetadata задают title, description и Open Graph прямо из серверного компонента. Динамические мета-теги для SEO.
- Серверные компоненты по умолчанию
4 Данные и серверная логика
- Серверные действия: Server Actions
Server Actions — функции с директивой 'use server', которые выполняются на сервере и вызываются прямо из форм и обработчиков. Мутации без отдельного API.
- Обработчики маршрутов: Route Handlers
Файл route.js в app/api создаёт настоящий API-эндпоинт с методами GET/POST. Когда нужен полноценный API помимо серверных компонентов и действий.
- Формы, ревалидация и обновление данных
После мутации данные надо обновить: revalidatePath и revalidateTag сбрасывают кэш, а useFormStatus показывает состояние отправки. Полный цикл работы с формой.
- Переменные окружения
Файл .env, разница между серверными и публичными переменными NEXT_PUBLIC_, и почему секреты не должны попадать в браузер. Безопасная работа с ключами.
- Серверные действия: Server Actions
5 Стилизация и оптимизация
- Способы стилизации: CSS Modules и Tailwind
Глобальные стили, CSS Modules с локальными классами и обзор Tailwind. Какой подход выбрать для проекта на Next.js и чем они отличаются.
- Оптимизация изображений: next/image
Компонент next/image автоматически сжимает, ресайзит и лениво грузит картинки в нужном формате. Чем он лучше обычного тега img и как его настроить.
- Шрифты, статика и производительность
next/font самохостит шрифты без мерцания, public/ хранит статику, а серверные компоненты, разделение кода и Core Web Vitals определяют скорость сайта.
- Способы стилизации: CSS Modules и Tailwind
6 Практика и деплой
- Реальное приложение: структура и блог
Организуем папки реального проекта (app/ — маршруты, components/, lib/) и собираем из изученного мини-блог: серверный список, динамическая статья, клиентский лайк.
- Аутентификация и база данных: обзор
Обзорно о подключении БД и аутентификации в Next.js: где хранить сессии, почему доступ к данным — на сервере, и какие библиотеки решают эти задачи.
- Деплой и что дальше
Продакшен-сборка через next build, деплой на Vercel и другие платформы, переменные окружения на проде и дорожная карта дальнейшего изучения Next.js.
- Реальное приложение: структура и блог