Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Next.js: Зачем он нужен
Что такое Next.js
Next.js — это React фреймворк, который строит полнофункциональные веб-приложения с Server-Side Rendering (SSR), Static Generation (SSG) и API routes встроенными из коробки. Он решает множество проблем, которые возникают при разработке с чистым React.
Основные проблемы React, которые решает Next.js
1. SEO
Чистый React (SPA) загружает пустую страницу, а контент появляется после загрузки JavaScript. Поисковые роботы видят пустую страницу.
// Плохо: React SPA
// Боты видят только <div id="root"></div>
import ReactDOM from 'react-dom';
ReactDOM.render(<App />, document.getElementById('root'));
// Хорошо: Next.js SSR
// На сервере генерируется полный HTML
export default function Page() {
return (
<div>
<h1>Эта страница SEO friendly</h1>
<Meta description="Описание для поисковиков" />
</div>
);
}
2. Performance
Next.js оптимизирует производительность:
- Code splitting: каждый маршрут загружает только нужный JS
- Image optimization: автоматическая оптимизация и форматы (WebP)
- Prefetching: предварительная загрузка ссылок
import Image from 'next/image';
export default function Avatar() {
return (
<Image
src="/avatar.jpg"
alt="Avatar"
width={200}
height={200}
/>
);
}
3. Routing
Файловая система = маршруты. Не нужно конфигурировать react-router вручную:
app/
page.tsx -> /
about/page.tsx -> /about
blog/[slug]/page.tsx -> /blog/my-post
Ключевые возможности
1. Server-Side Rendering (SSR)
// Генерируется на сервере при каждом запросе
export default function Page({ data }) {
return <div>{data.title}</div>;
}
export async function getServerSideProps() {
const res = await fetch('https://api.example.com/data');
const data = await res.json();
return {
props: { data },
revalidate: 10, // ISR: переген. каждые 10 сек
};
}
2. Static Generation (SSG)
// Генерируется один раз при сборке
export async function generateStaticParams() {
const posts = await fetchPosts();
return posts.map((post) => ({
slug: post.slug,
}));
}
export default function Post({ params }) {
return <article>{/* контент */}</article>;
}
3. Incremental Static Regeneration (ISR)
// Генерируется при сборке, затем переген. в фоне
export const revalidate = 60; // переген. каждые 60 сек
export default function Page() {
return <h1>Эта страница обновляется каждую минуту</h1>;
}
4. API Routes
// app/api/users/route.ts -> /api/users
export async function GET(request: Request) {
const users = await db.query('SELECT * FROM users');
return Response.json(users);
}
export async function POST(request: Request) {
const data = await request.json();
const user = await db.insert('users', data);
return Response.json(user, { status: 201 });
}
Когда использовать Next.js
- Контент-ориентированные сайты: блоги, новости, документация (SEO важен)
- E-commerce: нужна быстрая загрузка и SEO
- Полнофункциональные приложения: фронт + бэк в одном проекте
- Нужна производительность: автоматическая оптимизация
Когда использовать чистый React
- Приватные приложения: админ-панели, где SEO не нужен
- Сложные интерактивные UI: когда большинство логики на клиенте
- Легкие SPA: маленькие проекты без SEO требований
Next.js vs другие решения
- vs React + CRA: Next.js имеет встроенные оптимизации и SSR
- vs Gatsby: Next.js более гибкий для динамического контента
- vs Remix: похожи, но Next.js более популярен
Next.js делает разработку быстрее и приложения производительнее, комбинируя лучшие практики современного веб-разработки в один инструмент.