Генераторы статических сайтов, новый тренд

Целью GSS является добавление динамизма CMS к скорости загрузки статического узла.

Создание страницы по требованию, как это делает система управления содержанием, имеет преимущества, такие как адаптация страницы к пользователю, а также дискомфорт, поскольку доступ к базе данных для получения различных элементов контента значительно замедляет доступ. Кстати, поскольку страница, представленная посетителям, в основном одинаковая, строить ее при каждом посещении неразумно. Тайтмы на это отвечают, но не всегда работают очень хорошо. Еще один главный недостаток - безопасность: хакеры нацелены на популярные CMS, а когда находят лазейку, это позволяет им сразу получить доступ к миллионам сайтов и установить в них вредоносные программы, что уже произошло с пользователями Wordpress и Drupal.

Статическое решение

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

Например, в случае Jekyll каждый пост, созданный с помощью текстового редактора, помещается в текстовый файл в каталоге _ posts. Шаблон содержит поля для каждой части содержимого. Затем генератор интегрирует содержимое в шаблон и помещает созданную HTML-страницу в каталог _ сайта, который доступен посетителям через Интернет.

Шаблон - это шаблон, используемый для построения страницы. Простой пример:

<head>
   <title>{{ title }}</title> 
</head>
<body>
<div id="content">
{{ content }}
</div>
</body>

Шаблон содержит две переменные - «title» и «content», которые заменяются заголовком и содержимым отредактированного текстового файла. Веб-мастеру не нужно выполнять шаблон, он включен в каждую тему генератора. В противном случае можно использовать такой шаблонный язык, как Liquid, Stylus и т.д.

Функции генератора статических узлов

Все генераторы имеют общий список функций:

Мета-данные

В текстовом формате markdown, текстиле или другом формате предусмотрены поля для данных постоянного типа, таких как заголовок, авторское имя, дата, категория, имя пути и т.д. Эти поля будут отформатированы в CSS и представлены в соответствии с планировкой, предусмотренной шаблонами.

Символические связи

Это то, что более или менее хорошо работает в зависимости от ГСС. Это, например, замена в шаблонном файле включенного файла с такой версией, как script-1.2.3.js, на уникальное имя: script-js.

Статические активы (статические активы)

Это элементы, которые не обрабатываются генератором, такие как изображения, JS-файлы или CSS. Эти файлы помещаются в выделенный каталог, а генератор записывает их в оперативный каталог.

Другие функции поддерживаются только некоторыми GSS:

Комментарии

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

Шаблон страницы

Возможность выбрать тему не для всего сайта, а для каждой страницы. Шаблоны могут состоять из простой HTML-страницы или выполняться с использованием языка шаблона, например, Jade, Haml, Musache, eRuby...

Гит

Git - это совместная система обновления проектов, разработанная для Linux. Он также может использоваться для обычного веб-сайта и позволяет иметь удаленный образ, который является точной копией локального содержимого. Возможно, он позволяет работать многим, но это только один вариант. Не все генераторы предлагают Git, это хорошо, если мы уже использовали GitHub.

Дополнительная база данных

С помощью GSS билеты хранятся в текстовых файлах, а не в базах данных. Это не мешает использовать данные из базы, хранящейся на сервере, такие как список сохраненных пользователей, комментарии.

Относительные статьи

Под WordPress отображается список статей, связанных со страницей, отображаемой с помощью плагина. То же самое и с генераторами, список плагинов в основном включает в себя «связанные посты».

Sitemap и RSS

Генератор также может автоматически обновлять файл sitemap и RSS при добавлении новой страницы или при изменении страницы. Под Wordpress ситемап производит плагин.

Поле поиска

Чтобы добавить поле поиска, необходимо включить сценарий или плагин на страницы. Результат будет ускорен, если генератор выдаст индексный файл необычных слов. Также можно добавить поле поиска, предоставленное внешним сайтом (например, Google), который индексирует страницы.

Основные ГСС

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

Имя/сайт Язык Шаблон
Описание
Джекилл
jekyllrb.com/
Руби Жидкость
Включает сервер разработки для тестирования созданных страниц.
Может использоваться для размещения сайта на GitHub, кроме плагинов.
Требуется YAML-описание метаданных в каждой странице и соответствующий код в шаблере.
Liquid - обязательная система шаблона, и она не проста в использовании.
Пеликан
getpelican.com/
Питон Jinja2
Возможность ввоза билетов с Wordpress или Dotclear.
Редактирование в Markdown или reStructuredText.
Поддержка нескольких языков.
Возможна интеграция с Twitter.
Винтерсмит
wintersmith.io/
CoffeeScript Нефрит
Использует Node.js и gulp.js для цепей обработки плагинами и построения сайта из статических страниц.
Предварительный просмотр возможен локально .
Гибкость позволяет непосредственно принимать содержимое статического сайта или другого генератора.
Гексо
github.com/hexojs/hexo
JavaScript + Git EJS, Свиг, Стилус
Фреймворк блога, использующий Node.js для создания страниц.
Выкладывается на GitHub, Heroku, персональный хостинг с Git, в один заказ.
Импортирует страницы Wordpress, Джумла, Джекилл.
Поддерживает большинство плагинов Джекилла.
Гюго
gohugo.io/
Го Go templates, Amber, Ace
Преобразует содержимое каталога в HTML-страницы.
Локальный сервер для предварительного просмотра .
Поколение очень быстрое и предназначено для всех типов сайтов.
Собери
assemble.io/
JavaScript Гандлебары
Работает с Grunt.js (исполнитель задач) и Yeoman (экосистема для генераторов страниц).
Особенность заключается в создании элементов, которые могут собираться вместе для формирования веб-страниц.
Страница создается в HTML-шаблере, JSON, YAML или Gruntfile.
Харп
harpjs.com/
CoffeeScript EJS, Джейд, Стилус
Полная платформа со статическим веб-сервером.
Создание HTML/CSS/JS страниц является одним из вариантов.
Страницы можно редактировать локально или онлайн.
Особенно просто устроиться на работу.

Этот список не ограничивает, однако я постарался включить генератор для каждого языка программирования. Также можно было бы включить Лектора (Питона).

В конце концов, нужно ли использовать GSS или CMS? Все функции CMS могут быть предоставлены статическому сайту, когда он может общаться с сервером, и динамически редактировать страницу, что не создает проблем с Ajax или WebSocket (второй совсем недавно реализован). Проще использовать Wordpress, чем генератор, поэтому блогеры, не являющиеся компьютерщиками, наверняка предпочтут использовать эту CMS .
Но если безопасность или реактивность - важные точки для сайта, то генератор - явно лучшее решение.