static sites generation
DESCRIPTION
Overview of static sites generation: purpose, reasons, tools.TRANSCRIPT
Генерация статических сайтовАлексей Южаков, Parallels
Суть проблемы
Нужен сайт
Wix, Jimdo… Sitebuilder
Drupal, WordPress… Bitrix
Django, Rails, Symfony… Yii
Генераторы сайтов
Jekyll
Middleman
Octopress
Pelican
DocPac
… 50+
Область применения
Сайт-визитка
Сайт-“не визитка”
Промо-сайт
Портфолио
… Блог
Краткий обзор
Просто, гибко и удобно
Нужно знать HTML
Не только для статических сайтов
GitHub Pages работают на Jekyll
Быстрый старт
~ $ gem install jekyll ~ $ jekyll new my-awesome-site ~ $ cd my-awesome-site ~/my-awesome-site $ jekyll serve # => Смотрим http://localhost:4000
Быстрый старт
Детали
Директории с “_” - служебные
Тюнинг поведения - _config.yml
Есть шаблонизатор - Liquid
Расширение поведения - plugins
. ├── _config.yml ├── _drafts | ├── crazy-‐ideas.textile | └── technology.markdown ├── _includes | ├── footer.html | └── header.html ├── _layouts | ├── default.html | └── post.html ├── _posts | ├── 2007-‐10-‐29-‐nethack.textile | └── 2009-‐04-‐26-‐barcamp.textile ├── _data | └── members.yml ├── _site └── index.html
Пример сайта
Берем Twitter Bootstap и рисуем первую страницу
Сохраняем страницу в index.html
Смотрим ее в браузере – Jekyll уже работает
Разделяем страницу на шаблон и содержимое
Шаблон помещаем в _layouts/default.html
Ставим тег {{content}}
Пример сайта
В странице пишем:
-‐-‐-‐ layout: default title: Home -‐-‐-‐ !<div>…
Пример сайта
Пишем вторую страницу с меню “по-простому”
Помещаем HTML-код в _includes/menu.html
Подключаем меню на нужных страницах
… {% include menu.html %} …
Пример сайта
Создаем третью страницу (делаем меню «по-сложному») Описываем в _config.yml (или в _data/menu.yml)
menu: -‐ title: "Home" url: "/" -‐ title: "Modules" url: "/modules.html"
module Jekyll class SiteMenu < Liquid::Tag def render(context) site = context.registers[:site] …
!Пишем маленький plugin (где-то подсмотрел)
Публикация
Только генерация: jekyll build
Готовый сайт - в директории _site
Копируем _site на целевой сервер: rsync, scp, FTP
Выводы
Удобно для статического сайта
Легко поддерживать
Безопасно - нечего хакать!
Не для домохозяек
Бери и пользуйся
Полезные ссылки
http://jekyllrb.com/
http://middlemanapp.com/
http://octopress.org/
http://getpelican.com/
http://docpad.org/
http://staticgen.com/