Вопрос или проблема
Я использовал несколько различных генераторов статических сайтов, включая:
- GitBook
- Hexo
- HubPress
- Hugo
- Jekyll
- Pelican
И каждый из них не имел очень важной функции: гибкого, мощного и хорошо документированного движка шаблонов. Под этим я имею в виду движок шаблонов, который:
-
Позволяет включать содержимое из нескольких файлов в одном посте, при этом рендеринг будет таким же, как если бы содержимое нескольких файлов было помещено в пост. Например, на моем текущем блоге, работающем на Jekyll, я часто разбиваю посты на более мелкие и управляемые файлы markdown. Jekyll позволяет мне, используя движок шаблонов Liquid, включать эти файлы markdown в окончательный пост. Если вы хотите увидеть точно, что я использую и имею в виду, здесь пример файла поста, как вы можете увидеть, несколько файлов markdown включены в него с помощью
{% include_relative <FILENAME> %}
. Другие движки шаблонов не предоставили мне этой возможности. -
Может быть широко настраиваем с использованием условных операторов, тестов, итераций, greps, seds, и т. д. Например, если бы я мог проверить, содержит ли вводимая строка строку (но не обязательно равна ей), это было бы полезно. Аналогичным образом, если бы я мог удалить всё, что находится перед косой чертой
/
(например, если ввод был веб-адресомhttp://www.example.com
, это удалитhttp://
и оставитwww.example.com
) в вводе и использовать это, это было бы полезно. Если ввод был бы в формеa/b
(например,games-strategy/megaglest
, гдеa
этоgames-strategy
иb
этоmegaglest
), было бы полезно, если бы я мог разделить его на две частиa
иb
и использоватьa
иb
отдельно в своих шаблонах. -
Имеет исчерпывающую документацию. Я не встречал ни одного движка шаблонов, используемого генератором статических сайтов, который имел бы исчерпывающую документацию, тот, у кого была лучшая документация на момент написания этого вопроса, вероятно, был Liquid, но она все равно не исчерпывающая.
Совместимость с Linux тоже важна, так как я хотел бы развернуть на страницах GitHub, и для этого, с большинством SSG (кроме Jekyll и HubPress) мне нужно иметь возможность строить сайт локально (что для меня на Linux), а затем загружать содержимое сайта в ветку gh-pages
моего репозитория. Поддержка постов в markdown также обязательна. Если на сайте можно включить страницы, отличные от постов (например, страницу “обо мне” для сайта), это тоже будет отлично.
Я бы предложил взглянуть на злого близнеца Jekyll Hyde.
- Шаблоны через Jinja2, который имеет обширную документацию и включает обширные условные операторы и т. д.
- Markdown реализован в Python Markdown, который имеет обширный список расширений и API для расширений. Одно из доступных расширений, использующих этот API, это markdown include.
- Все вышеперечисленные инструменты написаны на Python, поэтому совместимость с Linux не является проблемой
-
Hyde имеет 4 команды из командной строки:
hyde create
Создать начальную структуру файловhyde gen
Генерировать страницы, по умолчанию инкрементальноhyde serve
Запустить локальный тестовый веб-сервер с автоматической (пер-)генерациейhyde publish
Опубликовать сгенерированные файлы в указанное место, например, на страницах GitHub.
Ответ или решение
Вопрос поиска статического генератора сайтов, совместимого с Linux и обладающего мощным, гибким и хорошо документированным шаблонизатором с поддержкой Markdown, действительно имеет большое значение для разработчиков и блогеров, желающих оптимально вести свои проекты.
На основе вашего опыта с различными статическими генераторами, мы можем рассмотреть следующий вариант:
Hyde
Hyde – это статический генератор сайтов, который можно рассматривать как «злую сестру» Jekyll. Ключевые преимущества Hyde заключаются в следующем:
-
Шаблонизатор Jinja2:
- Гибкость: Jinja2 предлагает широчайшие возможности для создания шаблонов, включая расширенные условные конструкции, итерации и простое управление данными.
- Документация: Jinja2 располагает обширной и понятной документацией, что упрощает использование всех доступных функций, включая возможности работы с фильтрами и макросами.
-
Поддержка Markdown:
- Hyde использует библиотеку Python Markdown, которая поддерживает множество расширений, позволяющих расширить функциональность Markdown. Одним из таких расширений является
markdown-include
, которое позволяет включать содержимое из других файлов Markdown непосредственно в ваши статьи, что соответствует вашему требованию о разбиении постов на более мелкие части.
- Hyde использует библиотеку Python Markdown, которая поддерживает множество расширений, позволяющих расширить функциональность Markdown. Одним из таких расширений является
-
Линукс-совместимость:
- Как все компоненты Hyde написаны на Python, его использование на Linux не вызывают никаких проблем. Вы сможете легко разрабатывать и развертывать свои сайты на этой платформе.
-
Команды для работы:
- Hyde предлагает удобный интерфейс командной строки с четырьмя основными командами:
hyde create
: создание начальной структуры файлов.hyde gen
: генерация страниц, с инкрементальной обработкой по умолчанию.hyde serve
: запуск локального веб-сервера с автоматической генерацией при изменениях.hyde publish
: публикация сгенерированных файлов в указанное место, включая GitHub Pages.
- Hyde предлагает удобный интерфейс командной строки с четырьмя основными командами:
Дополнительные Соображения
Вы упомянули важность возможности включения страниц, кроме постов, в структуру вашего сайта. Hyde позволяет легко организовать иерархию страниц, что будет полезно для создания, например, страниц «О сайте» или «Контакты». Кроме того, возможность использовать классы и функции в шаблонах открывает новые горизонты для персонализации вашего контента.
Заключение
Hyde, обладая мощным шаблонизатором Jinja2 и поддержкой Markdown, отвечает всем вашим требованиям к статическому генератору сайтов. Его простота в использовании и развертывании на Linux делают его идеальным выбором для таких проектов. Рекомендуется более подробно изучить документацию Jinja2 и Python Markdown, чтобы максимально использовать все возможности, которые они предлагают.
Таким образом, если вы ищете стабильный и мощный инструмент для создания статических сайтов, Hyde может стать вашим идеальным выбором. Не забудьте протестировать его в вашем рабочем процессе, чтобы убедиться, что он удовлетворяет всем вашим потребностям!