Перейти к содержанию
Innovialabs

Astro или Next.js для контентных сайтов, блогов и лендингов

Основы3 мин

Коротко

Если сайт в основном состоит из текста и страниц, Astro даёт минимум JavaScript и быструю загрузку из коробки; если внутри много интерактива, личных кабинетов и логики, удобнее Next.js.

Короткий ответ

  • Astro — для сайтов, где главное контент: блоги, документация, лендинги, корпоративные сайты, медиа. По умолчанию страницы уходят в браузер как чистый HTML без JavaScript.
  • Next.js — для продуктов, где контент соседствует с приложением: личные кабинеты, сложные формы, фильтры, авторизация, динамические данные.

Оба фреймворка умеют и статику, и серверный рендеринг. Разница в том, что они считают нормой: Astro — статичную страницу с редкими интерактивными вставками, Next.js — React-приложение, часть которого рендерится на сервере.

Островная архитектура Astro

Острова (islands) — интерактивные компоненты на статичной странице. Всё остальное остаётся обычным HTML.

---
import Header from '../components/Header.astro';
import SearchBox from '../components/SearchBox.jsx';
---
<Header />
<article>...</article>
<SearchBox client:visible />

Здесь Header и статья превращаются в HTML без скриптов, а SearchBox загрузит свой JavaScript, только когда появится в зоне видимости. Директивы управляют моментом гидрации:

  • client:load — сразу после загрузки страницы;
  • client:idle — когда браузер освободится;
  • client:visible — когда компонент попадёт в экран.

Острова можно писать на React, Vue, Svelte и других библиотеках, даже смешивая их на одном сайте.

Zero-JS по умолчанию: почему это важно

Для контентного сайта лишний JavaScript — это:

  • медленнее первая отрисовка на слабых телефонах и мобильном интернете;
  • хуже метрики Core Web Vitals, особенно INP;
  • больше кода, который нужно обновлять и поддерживать.

В Next.js React Server Components тоже сокращают объём клиентского кода, но страница всё равно загружает рантайм React и роутер для гидрации и навигации. Для приложения это оправдано, для статьи из текста и картинок — обычно избыточно.

Content collections

В Astro есть коллекции контента: Markdown и MDX-файлы описываются схемой, а фреймворк проверяет frontmatter при сборке.

import { defineCollection, z } from 'astro:content';

const blog = defineCollection({
  schema: z.object({
    title: z.string(),
    date: z.date(),
    tags: z.array(z.string()),
  }),
});

Если у статьи нет заголовка или дата записана с ошибкой, сборка упадёт, а не сломается страница в продакшене. В Next.js аналогичное решают через MDX, сторонние библиотеки или headless CMS — это гибче, но требует больше настройки.

Сравнение по ключевым пунктам

КритерийAstroNext.js
JavaScript по умолчаниюнетрантайм React
Интерактивностьточечные островавсё приложение на React
Работа с Markdownвстроена, со схемамичерез MDX и библиотеки
UI-библиотекилюбые, можно смешиватьтолько React
Личные кабинеты, авторизациявозможно, но не основной сценарийестественный сценарий
Режим по умолчаниюстатическая генерациястатика или динамика по маршрутам
Подходит дляблоги, доки, лендингипродукты, SaaS, магазины

Как выбрать

Выбирайте Astro, если:

  • большинство страниц — тексты, статьи, описания услуг;
  • контент пишется в Markdown или приходит из headless CMS;
  • важна скорость на мобильных при минимуме усилий;
  • интерактив ограничен формой, поиском, слайдером.

Выбирайте Next.js, если:

  • кроме контента есть приложение: кабинет, корзина, дашборд;
  • много страниц с персональными или часто меняющимися данными;
  • команда уже работает на React и хочет один стек для сайта и продукта.

Смешанный вариант тоже рабочий: маркетинговый сайт и блог на Astro, продукт — на Next.js на поддомене.

Типичные ошибки

  • Делать лендинг как SPA, когда он мог быть статичным HTML.
  • Превращать всю страницу в остров с client:load — так теряется смысл Astro.
  • Выбирать Next.js «на вырост» для сайта, где интерактивности не будет.
  • Не продумать CMS: редакторам нужен удобный способ публиковать, а не правка Markdown в репозитории.

Частые вопросы

Оба отдают поисковикам готовый HTML, поэтому индексация одинаково хороша. Преимущество Astro косвенное: меньше JavaScript — проще получить хорошие Core Web Vitals.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.