Astro calendar_today 23 апр. 2026 г. schedule 3 мин

Astro vs Eleventy (11ty): Сравнение двух генераторов статики

Сравнение Astro.js и Eleventy (11ty): производительность, гибкость, шаблонизаторы, экосистема. Когда выбрать Eleventy, а когда Astro — разбор с примерами.

person
Журналист
Автор
Astro vs Eleventy — сравнение двух генераторов статики

Eleventy (11ty) и Astro — два JavaScript-генератора статических сайтов. Оба — отличный выбор для контентных проектов. Оба работают без тяжёлого рантайма. Но между ними есть принципиальные различия в философии и подходе.

История и философия

Eleventy создан Зак Лезерманом в 2017 году. Его девиз — минимализм и гибкость. Eleventy не навязывает ни один шаблонизатор: выбирайте из Nunjucks, Liquid, Handlebars, Pug, EJS, Markdown и даже смешивайте их в одном проекте.

Astro появился в 2021 году с принципиально другой идеей — «Острова Архитектура». Astro ориентирован на компонентный подход с .astro-файлами и поддержкой React/Vue/Svelte/Preact.

Сравнение

ПараметрAstroEleventy
Год выпуска20212017
ПоддержкаCloudflare (с 2025)Open Source (Zach Leatherman)
Шаблонизатор.astro компонентыNunjucks, Liquid, Handlebars, и др.
UI-фреймворкиReact, Vue, Svelte, Preact, SolidЧерез плагины (WebC)
TypeScript✅ Нативно⚠️ Через плагины
Оптимизация изображений✅ Встроена (<Image />)Через плагины
Content Collections✅ Типизированные + ZodЧерез JS data files
Sitemap✅ Официальная интеграцияПлагин @11ty/eleventy-plugin-rss
MDX✅ Официальная интеграция⚠️ Требует настройки
PageSpeed98-10095-100
Кривая обученияСредняяНизкая (HTML + Markdown)
Размер экосистемыРастущаяЗрелая и стабильная

Производительность сборки

Eleventy часто выигрывает по скорости сборки для очень больших сайтов (10 000+ страниц), потому что не обрабатывает JS-компоненты.

code
Eleventy (10 000 страниц):  ~8 секунд
Astro (10 000 страниц):     ~18 секунд

Но для типичных проектов (< 1 000 страниц) разница незаметна.

Шаблонизация: разные парадигмы

Eleventy — Nunjucks (классический):

code
{% raw %}
---
title: Моя статья
---

<article>
  <h1>{{ title }}</h1>
  {% for post in collections.all %}
    <a href="{{ post.url }}">{{ post.data.title }}</a>
  {% endfor %}
</article>
{% endraw %}

Astro — компонентный подход:

code
---
const { title } = Astro.props;
const posts = await getCollection('blog');
---

<article>
  <h1>{title}</h1>
  {posts.map((post) => <a href={post.url}>{post.data.title}</a>)}
</article>

Astro ближе к современному React-миру. Eleventy ближе к классическому шаблонному подходу.

Экосистема и плагины

Eleventy имеет богатую экосистему плагинов:

  • @11ty/eleventy-img — оптимизация изображений
  • @11ty/eleventy-plugin-syntaxhighlight — подсветка кода
  • @11ty/eleventy-navigation — навигация
  • WebC — компонентная система Eleventy

Astro использует npm-интеграции:

  • @astrojs/react, @astrojs/vue — UI-фреймворки
  • @astrojs/sitemap, @astrojs/rss — SEO
  • @astrojs/mdx — расширенный Markdown
  • @astrojs/starlight — документация

Когда выбрать Eleventy

  • Простой блог или документация без UI-фреймворков
  • Команда знакома с Nunjucks/Liquid/Handlebars
  • Нужна максимальная скорость сборки (100 000+ страниц)
  • Проект исторически на Eleventy — миграция не нужна
  • Хотите минимум зависимостей и максимум контроля

Когда выбрать Astro

  • Нужны React/Vue/Svelte компоненты на отдельных страницах
  • Команда знакома с JSX/TSX
  • Важна типизация через TypeScript и Zod
  • Нужен @astrojs/starlight для документации
  • Новый проект с нуля в 2026 году

Миграция с Eleventy на Astro

code
Eleventy                    →  Astro
_site/                      →  dist/
src/_includes/base.njk      →  src/layouts/BaseLayout.astro
src/posts/post.md           →  src/content/blog/post.mdx
.eleventy.js                →  astro.config.mjs
collections                 →  Content Collections

Markdown-файлы переносятся без изменений. Шаблоны Nunjucks переписываются в .astro.

Итог

Eleventy и Astro — не конкуренты, а инструменты для разных задач. Eleventy побеждает в минимализме, гибкости шаблонизаторов и скорости сборки гигантских сайтов. Astro побеждает в современном DX, TypeScript, оптимизации изображений и компонентном подходе. Для нового проекта в 2026 году — Astro. Для стабильного Eleventy-проекта — оставайтесь на Eleventy, если нет веских причин мигрировать.

Портрет автора Дмитрий Соколов

Senior Frontend Engineer / Tech Writer

Senior Frontend Engineer с 9-летним опытом. Специализируется на Astro.js и JAMstack.

Комментарии

Загрузка комментариев...

Оставить комментарий

Комментарии проходят модерацию перед публикацией. Правила

Рекомендуем к прочтению