Next.js: полный фреймворк
▸Возможности
Next.js предоставляет маршрутизацию, SSR, SSG, API routes, middleware, оптимизацию изображений и многое другое из коробки.
▸App Router
1// app/page.tsx — главная страница2export default function Home() {3 return <h1>Привет мир</h1>;4}56// app/about/page.tsx — страница /about7export default function About() {8 return <h1>О нас</h1>;9}
▸Server Components
1// Компонент по умолчанию — серверный2async function Products() {3 const products = await fetch('https://api.example.com/products');4 const data = await products.json();5 return (6 <ul>7 {data.map(p => <li key={p.id}>{p.name}</li>)}8 </ul>9 );10}
▸API Routes
1// app/api/users/route.ts2import { NextResponse } from 'next/server';34export async function GET() {5 const users = await db.user.findMany();6 return NextResponse.json(users);7}
Vite: быстрый сборщик
▸Принцип работы
Vite использует ES modules для dev-режима и Rollup для прода. Горячая замена модулей работает мгновенно.
▸Настройка
1npm create vite@latest my-app -- --template react-ts2cd my-app3npm install4npm run dev
▸Конфигурация vite.config.ts
1import { defineConfig } from 'vite';2import react from '@vitejs/plugin-react';34export default defineConfig({5 plugins: [react()],6 resolve: {7 alias: {8 '@': '/src',9 },10 },11 server: {12 port: 3000,13 },14});
Сравнение производительности
▸Dev режим
Vite: мгновенный старт, HMR за миллисекунды. Next.js: медленнее из-за сборки TypeScript и компиляции.
▸Production build
Vite: быстрая сборка через Rollup. Next.js: более медленная, но с оптимизацией для SSR.
▸Bundle size
Vite: минимальный runtime. Next.js: добавляет фреймворк runtime (~80 KB).
SSR и SSG
▸Next.js
1// SSR — страница генерируется при каждом запросе2export async function getServerSideProps() {3 const data = await fetchData();4 return { props: { data } };5}67// SSG — страница генерируется при сборке8export async function getStaticProps() {9 const data = await fetchData();10 return { props: { data }, revalidate: 60 };11}
▸Vite с SSR
1// vite.config.ts2export default defineConfig({3 build: {4 ssr: true,5 },6});
SSR в Vite требует ручной настройки. Next.js предоставляет это из коробки.
Маршрутизация
▸Next.js File-based Routing
Структура файлов = структура маршрутов. Вложенные layouts, dynamic routes, catch-all routes.
▸Vite + React Router
1// vite + react-router2import { BrowserRouter, Routes, Route } from 'react-router-dom';34function App() {5 return (6 <BrowserRouter>7 <Routes>8 <Route path="/" element={<Home />} />9 <Route path="/about" element={<About />} />10 </Routes>11 </BrowserRouter>12 );13}
Vite требует установки React Router отдельно.
Оптимизация
▸Next.js
▸Vite
Экосистема
▸Next.js
▸Vite
Когда выбирать Next.js
Когда выбирать Vite
Заключение
Next.js — полный фреймворк с SSR, SSG и богатой экосистемой. Vite — быстрый сборщик для SPA. Выбирайте Next.js для SEO-зависимых проектов с серверным рендерингом. Выбирайте Vite для быстрых SPA без SSR-требований. Оба — отличные инструменты для современной React-разработки.