Перейти к основному содержимому

Next.js

Разработчику Архитектору

Next.js

Next.js — фреймворк поверх React: файловая маршрутизация, серверный рендеринг (SSR), статическая генерация (SSG), API Routes и (в App Router) React Server Components.

Пошаговый старт: Первая программа на Next.js. Сервер на Node: Node.js, Первая программа на Node.js.


Зачем Next.js, если есть React

Задача«Голый» React + ViteNext.js
Маршруты /about, /blog/[id]react-router, настройкаapp/ или pages/ из коробки
SEO и первый HTMLCSR — пустая страница до JSSSR/SSG отдают готовый HTML
API рядом с UIОтдельный ExpressRoute Handlers / API routes
ДеплойСтатика + отдельный BFFVercel, Node, Docker

Next.js не заменяет изучение React: компоненты, хуки и состояние те же.


App Router vs Pages Router

App Router (app/)Pages Router (pages/)
СтатусРекомендуемый для новых проектовLegacy, но поддерживается
Файлыpage.tsx, layout.tsx, loading.tsxpages/index.tsx
Серверные компонентыДа, по умолчаниюНет (клиентский React)
Data fetchingasync Server Components, fetch с кэшемgetServerSideProps, getStaticProps

Новые материалы энциклопедии ориентируются на App Router (Next.js 13+).


Рендеринг

  • Server Component — выполняется на сервере, не попадает в бандл клиента (нет useState / useEffect).
  • Client Component — директива 'use client' в начале файла.
  • SSGexport const dynamic = 'force-static' или генерация на build.
  • SSR — динамические страницы при каждом запросе.

Структура проекта (App Router)

my-app/
app/
layout.tsx # общий каркас
page.tsx # /
about/
page.tsx # /about
api/
hello/
route.ts # GET /api/hello
public/ # статика
next.config.ts
package.json

Route Handlers (API)

// app/api/notes/route.ts
import { NextResponse } from 'next/server';

export async function GET() {
return NextResponse.json([{ id: 1, text: 'demo' }]);
}

export async function POST(request: Request) {
const body = await request.json();
return NextResponse.json(body, { status: 201 });
}

Экосистема

ИнструментРоль
TurbopackБыстрый dev-сборщик (альтернатива Webpack в dev)
next/imageОптимизация изображений
next/fontЛокальные шрифты без layout shift
Middlewaremiddleware.ts — auth, редиректы, i18n

Когда не нужен Next.js

  • Виджет внутри чужого сайта (достаточно React + Vite).
  • Чистое SPA за API без SEO.
  • Мобильное приложение — React Native.

Связанные материалы


См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).