Генераторы статических сайтов
Генераторы статических сайтов (англ. англ. static site generators, SSG) — это программные движки, которые используют входные текстовые файлы (такие как Markdown, reStructuredText, AsciiDoc и JSON) для создания статических веб-страниц[1]. В отличие от динамических веб-сайтов, эти статические страницы не изменяются в зависимости от запроса. Это упрощает требования к бэкенду и позволяет распространять сайт через сети доставки контента (CDN). Простая архитектура также затрудняет злоумышленникам модификацию веб-сайта из-за меньшей поверхности атаки этих относительно простых бэкендов. Одними из самых популярных генераторов статических сайтов являются Jekyll, Hugo, Eleventy, Gatsby и Next.js[2][3]. SSG обычно используются для редко изменяемого, информационного контента, такого как страницы продуктов, новостные статьи, документация к программному обеспечению и блоги.
Архитектура
[править | править код]SSG обычно состоят из шаблона, написанного на HTML с использованием системы шаблонов, такой как Liquid (Jekyll) или Go template (Hugo). Та же структура (обычно Git-репозиторий) включает контент в формате простого текста, таком как Markdown или reStructuredText, или в структурном метаформате, таком как JSON или XML. Один текстовый файл может соответствовать одной веб-странице. В качестве альтернативы, один файл со структурными метаданными может соответствовать всему веб-сайту, если используется фреймворк для одностраничных приложений, такой как AngularJS. Настройки переменных сайта хранятся в конфигурационном файле в формате простого текста: _config.yml (YAML), _config.toml (TOML) или _config.json (JSON). Файлы страниц обычно также начинаются с преамбулы (front matter) в формате YAML, TOML или JSON для определения переменных, таких как заголовок, постоянная ссылка или дата. Файлы, имена которых начинаются с подчёркивания (_), например _index.md (в отличие от index.md), считаются шаблонами или архетипами и, таким образом, не рендерятся как отдельные страницы.
Примеры
[править | править код]Существование нескольких сотен SSG задокументировано, причём подавляющее большинство написано на языках, уже широко распространённых в вебе, таких как Python, Go, JavaScript и TypeScript[4].
| Название системы | Язык | Примечания |
|---|---|---|
| Jekyll | Ruby | Использует язык шаблонов Liquid.[4] |
| Hugo | Go | Использует шаблоны Go; его главной особенностью является высокая скорость компиляции.[4] |
| Next.js | JavaScript | Использует шаблоны React.[4] |
| Pelican | Python | Использует шаблоны Jinja2.[4] Компилирует HTML из reStructuredText или Markdown. |
| Astro | JavaScript | По умолчанию использует синтаксис .astro (похожий на HTML или JSX). Поддерживает несколько фреймворков: Svelte, React, Preact, Vue.js, SolidJS, Lit, AlpineJS. Компилирует HTML из Markdown или MDX.[4] |
| Docusaurus | JavaScript | Компилирует HTML из MDX, Markdown, JavaScript и React. Использует Node.js. Кастомизация с помощью React. |
| Eleventy | JavaScript | Поддерживает 10 языков шаблонов.[4] |
Сравнение с серверными системами
[править | править код]
Многие серверные системы шаблонов имеют возможность публиковать выходные страницы на сервере, где опубликованные страницы являются статическими. Это распространено в системах управления контентом (CMS), таких как Vignette, но не считается генерацией в том же смысле, что и у SSG. В большинстве случаев эта «опция публикации» не является частью самой системы шаблонов, и она может быть выполнена внешним программным обеспечением, таким как Wget[5].
Люди начали использовать динамические страницы, генерируемые из шаблонов с помощью уже существовавшего программного обеспечения, адаптированного для этой задачи. Этим ранним ПО были препроцессоры и макроязыки, адаптированные для использования в вебе и работающие через CGI. Позднее появилась простая, но значимая технология — прямое выполнение в модулях-расширениях, начиная с SSI.
Примечания
[править | править код]- ↑ What is a Static Site Generator? How do I find the best one to use? (англ.). Netlify. Дата обращения: 18 сентября 2022. Архивировано 18 сентября 2022 года.
- ↑ What Is a Static Site Generator, and How Can It Help Your Website Creation Process? (англ.). TeleportHQ (15 декабря 2021). Дата обращения: 18 сентября 2022. Архивировано 18 сентября 2022 года.
- ↑ What is a static site generator? (англ.) (18 сентября 2022). Дата обращения: 18 сентября 2022. Архивировано 18 сентября 2022 года.
- ↑ 1 2 3 4 5 6 7 Static Site Generators - Top Open Source SSGs (англ.). Jamstack.org. Дата обращения: 18 сентября 2022. Архивировано 18 сентября 2022 года.
- ↑ Static Site Generator (англ.). Gatsby. Дата обращения: 18 сентября 2022. Архивировано 18 сентября 2022 года.