Генераторы статических сайтов (и какой из них выбрать)

Сегодня хочу поговорить о нескольких инструментах для предварительного рендеринга HTML. Давайте разбираться!

Что такое генератор статических сайтов

Генератор Статических Сайтов или SSG — это инструмент, позволяющий создавать контент в формате markdown, определять шаблоны для различных типов контента, а затем компоновать их вместе.

Если это напоминает серверные CMS, такие, как WordPress, то так оно и есть!

Основные отличия заключаются в том, что SSG…

  • Храните контент не в базе данных, а в плоских файлах с разметкой markdown.
  • Генерирует HTML-файлы заранее, а не по требованию.

Они обеспечивают преимущества производительности (как в браузере, так и на сервере) плоских HTML-файлов, а также преимущества системы на основе шаблонов для разработчиков и авторов.

Различные варианты SSG

Существует более сотни различных генераторов статических сайтов, но есть лишь несколько вариантов, занимающих большую часть рынка…

  • Jekyll, использующий Ruby для шаблонизации.
  • Hugo, использующий Go для шаблонизации.
  • 11ty, использующий Node и JavaScript для шаблонизации.
  • SvelteKit, использующий JavaScript-подобный синтаксис шаблонизации.
  • Astro, использующий MDX для шаблонизации, а также позволяющий импортировать Svelte, компоненты React и многое другое.

Так какой же из них выбрать?

Рекомендую изучить документацию по каждому из них и выбрать тот, который разворачивается в один клик, поддерживает язык шаблонов, с которым вы чувствуете себя комфортно, и ощущается правильным.

Хотя у них есть существенные различия, все они скорее похожи, чем отличаются.

Несколько важных нюансов

Есть несколько важных различий, о которых следует знать…

  • Jekyll — это первоисточник SSG. Он также не очень хорошо поддерживается, и, насколько я понимаю, его разработка находится в состоянии стагнации.
  • Hugo компилирует быстрее всех остальных и может генерировать файлы других типов, кроме HTML (я использовал его для генерации JSON, XML, RSS-лент и даже PHP-файлов).
  • Сообщество вокруг Hugo относительно невелико, а поддержка со стороны его создателя… не очень.
  • Поскольку он основан на Node и JS, 11ty может делать то, что не могут Hugo и Jekyll (например, генерировать уникальные HTML-файлы из каждого элемента в API-ответе).
  • У 11ty одно из самых ярких и отзывчивых сообществ, а его создатель, Zach Leatherman, невероятно добр и щедр в помощи людям.
  • SvelteKit позволяет создавать функциональность бэкенда вместе с кодом фронтенда и выдаёт в основном статичный HTML с небольшим количеством JavaScript по мере необходимости.
  • Astro очень похож на SvelteKit, но также позволяет работать с существующим кодом React. Он компилируется в основном в статичный HTML и ванильный JS, а не выводит React в браузер.
  • Astro очень быстро переходит от одной версии к другой, что делает его немного опасным для использования в продакшн-средах.
  • 11ty очень активно развивается, но основные изменения в версии вносятся медленно, приоритет отдаётся стабильности.

Это означает, что если бы мне пришлось выбирать вариант для клиента сегодня, я бы рекомендовал 11ty, если бы у меня не было дополнительного контекста.

Дополнительные материалы

Предыдущая Статья

Руководство по валидации в Laravel

Следующая Статья

Composer: Менее известные, но полезные команды