На картинке — я и мой компик в процессе переноса сайта с Notion на Hugo.
Содержание:
[1] Выбор нового движка
Драма с уходом Notion
В начале славных дел статьи в этом блоге выходили на Notion, но:
В сентябре 2024 Notion объявил о своём уходе из России
Notion работает только онлайн, поэтому он в любой момент мог рипнуться вместе с файлами пользователей (что он и сделал лол)
Ссылки на статьи, которые генерировал Notion, выглядели нечитабельно (типа: notion.so/yourblog/819fa63eb79b4a53b5…)
Поэтому вопрос переезда блога созревал уже давно.
💡
Notion — это note-taking app с возможностью публикации сайта из своих заметок.
Сделан максимально удобным для обычного пользователя: большие кнопки, drag’n’drop, публикация
сайта делается в 1 клик и т.п.
Выбор движка
Раньше я уже работал с популярными CMS-системами (Wordpress, Joomla и т.п.), но работать
в них мне не нравилось:
Работа над сайтом происходит через веб-интерфейс провайдера сайта (неудобно)
Сайт хранится у провайдера, а не у меня локально
Зависимость от сторонних плагинов; а реально нужные функции плагинов — обычно платные
Можно выбрать готовую визуальную тему, но в мелочах
докручивать все отступы и рамочки приходится окружными путями
Мало прямого контроля над структурой сайта
Затем был обнаружена такая вещь, как генераторы статических сайтов.
Грубо, «статический сайт» означает «простой сайт с текстом и картинками»
(чего для личного блога вполне достаточно). Hugo — просто самый популярный из таких генераторов.
У Hugo (как и других у генераторов статических сайтов) есть ярко-выраженные особенности:
Весь сайт хранится у пользователя на диске полностью оффлайн (ну или в git)
Полный прямой доступ к структуре и стилю сайта, большой простор для кастомизации
Основной минус: очень высокий порог входа по сравнению с Notion
С уходом Notion стало ясно, что лучше уж потратить силы на то, чтобы разобраться с Hugo,
чем делать сайт на движках, которые могут отъехать в любой момент со всем твоим содержимым 😑
💡
Hugo — генератор статических сайтов с открытым кодом.
Сайт хранится в исходниках (в виде Markdown файлов) и собирается вдоль создаваемых пользователем шаблонов (написанных на Go и HTML).
[2] Дизайнерские решения сайта RAVRLab
У Hugo есть много предустановленных тем. Я так и не смог найти ту, которая бы мне подошла,
поэтому я просто выбрал пустую тему (hugo-starter-theme) и начал на её базе делать свою, одновременно разбираясь как работает движок.
Тема Hugo назначает сайту не только внешний вид (стиль CSS), но ещё и его структуру (каталоги, подкаталоги, категории страниц и т.п.).
Ниже описываю мелочи, которые не заметны на первый взгляд, но в настройку которых я конкретно упоролся.
Изначально, все эти штуки на любом сайте воспринимаются как должное, но т.к. тема настраивалась с нуля —
всё это приходилось прописывать руками.
Так выглядел сайт в самом начале (с пустой темой)
Списки и отступы
Я в шоке от того, на каком количестве сайтов значок «•» пункта располагается не пойми где относительно текста.
Поэтому у себя здесь выставил всё ровно, насколько смог (моноширинный шрифт тоже с этим помогает):
Пункт 1
Вложенный пункт 1
Kurwa
Bober
Вложенный пункт 2
Пункт 2
Явно обозначенные заголовки
Каждый заголовок сопровождается значком параграфа «§», чтобы было явно видно, какого уровня это заголовок.
Заголовки
Оформление изображений
Изображения очерчиваются рамками
Кликабельные изображения отличаются от некликабельных
Изображения/видео хранятся просто как отдельные файлы
Разметка YAML используется для сборки отдельных Markdown файлов в цельный сайт
В YAML также хранятся общие настройки сайта
Стилизация сайта прописывается, ожидаемо, в CSS
Пользователь настраивает шаблоны, по которым Markdown файлы будут генерироваться в HTML страницы.
Сами шаблоны пишутся на HTML и Go. Если требуется, можно подключать JavaScript (например,
на этом сайте через JavaScript работает рендер матемамических формул KaTeX)
Вживую написание статьи выглядит так:
Слева — текст пишется в любой текстовый редактор (с разметкой Markdown)
Справа — итоговая страница отображается прямо в браузере
Так выглядит написание статьи в Hugo
Поскольку все шаблоны я настраивал с нуля, то вышла довольно объёмная система, описание
которой было сделано в виде MindMap: