Pull to refresh

Генераторы статических веб-сайтов

Reading time3 min
Views24K
Эта замета о нескольких генераторах статических веб-страниц. Список различных движков — в самом конце.

Jekyll появился, когда Tom Preston-Werner, сооснователь GitHub, устав от блогерских платформ вроде Wordpress или Blogger, задался вопросом: "А что случится, если я буду писать в блог так, как я разрабатываю програмные продукты?" Посты в нем создаются в файлах в формате Textile и проспускаются через движок шаблонов Liquid. И тот, и другой весьма популярны среди рубистов.

Очень кстати Jekyll оказался для сайта донецкого кофе-и-кода. Все желающие могут писать новости, как файлы в репозитории. Делать commit на GitHub. Репозиторий с файлами проверяется cron'ом каждые полчаса. И, если есть обновления, обновляется сайт. Таким образом получается своеобразное кеширование на 30 минут. Хостинг любезно предоставлен Пашей Резниковым. О деталях работы с постами можно почитать в памятке на сайте, но по сути там все просто: редактируется файл и делается git push.

Для своих целей мне захотелось чего-то написанного на Python. Хотелось, чтобы страницы писались в reStructuredText, записи сортировались по последней редактированной, и еще ряд мелких прихотей. Обсуждение на StackOverflow может послужить хорошей отправной точкой для тех, перед кем встанут подобные задачи.

Аналог Jekyll на Python — Hyde, который растет из AYM CMS, показался своего рода "жилетом Вассермана" — слишком много всего, хотя предок весьма легковесен.

Привлек внимание Poole. Там используется Markdown, а в шаблонах автор сделал возможным встраивать куски кода на Python. Для конкретно таких целей, такое смешивание кода и дизайна показалось уместным. Понравилось то, что изначально весь движок — один файл, который потом создает и изначальные шаблоны.

В конце концов, начал писать StaPy — свой велосипед по мотивам Poole. Там также все файлы с текстом для страниц подгружаются в dict-подобные объекты, а затем по ним генерятся страницы и заглавная. Все же решил не мешать код и дизайн, зато отказался от парадигмы устанавливания — скрипт хранится вместе со всеми файлами в директории и подпиливатся для различных применений. В качестве шаблонов используются шаблоны Django. Код по ссылке выложен лишь для илюстрации — пока не присваиваю ему даже минорную версию.

После всех наблюдений над различными движками мне сейчас кажется весьма логичным, если встанут задачи генерации статических веб-сайтов, выбирать свой любимый язык (Python, Ruby, PHP...), наиболее знакомый движок шаблонов (Django, Liquid, Smarty...), наиболее знакомый язык разметки (reStructureText, Textile, Markdown...) и набросать свой генератор по мотивам имеющихся. Для командных целей усреднять предпочтения, и еще учитывать, что больше всего распространено и лучше всего документировано.

Список движков


Python


AYM CMS
довольно легковесный движок с Django templates
Hyde (старый)
аналог Jekyll, Django templates, очень много чего намешано
Hyde (новый)
без Django, активной разработке
Poole
Markdown + шаблоны поддерживающие вставку кода
StaPy
reStructureText + Django templates
Cyrax
На шаблонах Jinja2
Pelican
Jinja2, reST, Markdown — описание на русском
Blogofile
Mako шаблоны, разные языки разметки

pyblosxom.bluesock.org/ — очень древний по мерках интернета, since 2004
nikola.ralsina.com.ar/ — развитый
posativ.org/acrylamid/ — простой


Ruby


Jekyll
очень популярный движок среди тех, кто использует GitHub
Gollum-site
Генерирует статический сайт из вики в формате Gollum, которые используются GitHub (git+Markdown, Textile, reST...).
Octopress
Надстройка над Jekyll с рядом плагинов и responsive шаблоном.

PHP


Staceyapp

Node.js


github.com/sapegin/sweet

Разное



bitbucket.org/jek/blatter/
github.com/dz/chisel
markdoc.org/
nanoc.stoneship.org/
inky.github.com/pilcrow/
sphinx.pocoo.org/
ivy.fr/tahchee/

Дополняйте список в коментариях.
Tags:
Hubs:
Total votes 16: ↑11 and ↓5+6
Comments16

Articles