Haunted — это библиотека для создания веб-компонентов на базе Web Components и Hooks в стиле React. Несмотря на лёгкость и минимализм, при использовании Haunted важно учитывать SEO, поскольку контент часто рендерится на стороне клиента, что может затруднить индексацию поисковыми системами.
Haunted изначально ориентирован на клиентский рендеринг, поэтому контент, генерируемый JavaScript на клиенте, может быть недоступен для поисковых роботов. Для решения используется серверный рендеринг:
import { render } from 'haunted/ssr.js';
import { html } from 'haunted';
function MyComponent({ title }) {
return html`<h1>${title}</h1>`;
}
const htmlString = render(html`<${MyComponent} title="Пример SEO"/>`);
console.log(htmlString);
render генерирует HTML на сервере.Использование HTML-тегов с правильной семантикой критично для SEO:
import { html, component } from 'haunted';
function Article({ title, content }) {
return html`
<article>
<header>
<h1>${title}</h1>
</header>
<section>
<p>${content}</p>
</section>
</article>
`;
}
customElements.define('my-article', component(Article));
<article>, <header>,
<section> помогают поисковикам понять структуру
документа.<h1>–<h6> для
заголовков обеспечивает правильный иерархический порядок.В Haunted SEO-оптимизация также включает динамическое управление метатегами:
function setMeta({ title, description }) {
document.title = title;
let desc = document.querySelector('meta[name="description"]');
if (!desc) {
desc = document.createElement('meta');
desc.name = 'description';
document.head.appendChild(desc);
}
desc.content = description;
}
setMeta({ title: 'Haunted SEO', description: 'Пример оптимизации SEO в Haunted' });
document.title и
<meta name="description"> должны обновляться для
каждой страницы.SEO напрямую зависит от скорости загрузки и отклика страницы. Haunted минималистичен, но следует учитывать:
Минимизация размера бандла:
Предзагрузка критического контента:
<link rel="preload" href="/main.js" as="script">Использование кэширования и CDN.
Если контент формируется на клиенте (например, через API), поисковики могут его не увидеть. Возможные решения:
SSR — основной метод.
Prerendering — генерация статических HTML-страниц заранее.
Использование <noscript>:
<noscript>
<p>Контент доступен только с включенным JavaScript</p>
</noscript>
JSON-LD и структурированные данные для описания контента:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Haunted SEO",
"author": "Автор",
"datePublished": "2026-01-17"
}
</script>Haunted позволяет использовать ленивую загрузку частей интерфейса. Для SEO следует учитывать:
<a href="...">, а не только обработаны
JS.SEO в Haunted требует сочетания правильной архитектуры компонентов и грамотного рендеринга на сервере, чтобы динамические интерфейсы оставались индексируемыми и производительными.