Preact — это легковесный фреймворк для создания интерфейсов на JavaScript, который сохраняет совместимость с React. Одной из ключевых задач при разработке SPA-приложений на Preact является обеспечение хорошей индексации страниц поисковыми системами. Стандартная клиентская рендеринга часто создает проблемы для SEO, поскольку поисковые роботы видят лишь минимальный HTML без динамического контента. Решения включают серверный рендеринг, статическую генерацию и корректное использование мета-тегов.
Серверный рендеринг позволяет создавать HTML на стороне сервера до
того, как страница отправляется пользователю. В Preact это реализуется с
помощью библиотеки preact-render-to-string.
import { h } from 'preact';
import render from 'preact-render-to-string';
import App from './App';
const html = render(<App />);
Преимущества SSR:
Особенности реализации:
preact-router с поддержкой SSR.SSG генерирует HTML во время сборки проекта. В Preact для этого
используют фреймворк Preact CLI с поддержкой
preact build и плагинов.
Преимущества SSG:
Особенности:
Для SEO критично корректно указывать мета-теги. В Preact для этого
можно использовать библиотеку preact-helmet.
import { h } from 'preact';
import { Helmet } from 'preact-helmet';
const Page = () => (
<div>
<Helmet>
<title>Главная страница</title>
<meta name="description" content="Описание страницы для SEO" />
<meta property="og:title" content="Главная страница" />
</Helmet>
<h1>Добро пожаловать</h1>
</div>
);
Ключевые моменты:
<title> и
<meta name="description"> должны быть уникальными для
каждой страницы.og:) и Twitter Cards улучшает
видимость в соцсетях.Использование lazy loading для изображений и компонентов
сокращает время загрузки страницы. В Preact применяется
preact/compat с React.lazy и
Suspense.
import { h, Suspense } from 'preact';
import { lazy } from 'preact/compat';
const LazyComponent = lazy(() => import('./LazyComponent'));
const App = () => (
<Suspense fallback={<div>Загрузка...</div>}>
<LazyComponent />
</Suspense>
);
SEO-подходы:
JSON-LD)
помогает поисковым системам понимать контент.<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Пример статьи",
"author": "Автор",
"datePublished": "2025-12-27"
}
</script>
#) лучше
индексируются.preact-router с поддержкой SSR позволяет
выдавать корректный HTML для каждой страницы.SEO тесно связано с производительностью:
preact-cli или
Vite.preact/compat только там, где требуется
совместимость с React-библиотеками.Все эти меры напрямую влияют на метрики LCP, FID и CLS, которые учитываются Google при ранжировании.