Динамическое создание статических веб-сайтов с помощью Hugo

Я создаю хостинг для статических веб-сайтов и хотел бы создавать веб-страницы по умолчанию для своих пользователей и хотел бы использовать для этого Hugo. Вопрос в том, как лучше всего динамически генерировать веб-страницы для нескольких пользователей? Это моя мысль до сих пор:

  1. Пользователь заполняет форму для содержания своего веб-сайта, например, фотографий, названия, описания продукта и т. д.
  2. Перейдите к серверной части (я использую Perl Mojolicious) и создайте файлы уценки на основе предоставленной информации и сохраните их в указанной папке, созданной для этого пользователя.
  3. Запустите Hugo для сборки с использованием этих файлов md и переместите общую папку в корневой каталог пользователя.

Мне это кажется неправильным, так как несколько пользователей будут конкурировать за запуск Hugo, и я думаю, что было бы намного проще, если бы я мог просто создавать файлы html непосредственно из бэкэнда, а не создавать файлы md, а затем запускать Hugo для создать html-файлы. Есть ли способ лучше и умнее?


1
457
1

Ответ:

Решено

Если я не ошибаюсь, кажется, вы хотите создать похожий портал WordPress или что-то подобное, перейдя от темы Markdown plus к содержимому HTML/CSS/JavaScript. Конечные пользователи редактируют контент в Markdown, выбирают тему, а об остальном позаботятся.

ИМХО, может быть два пути:

(1) Использование Hugo на сервере и забота о папках назначения и сгенерированных артефактах, а также сопоставление сгенерированных ссылок с интерфейсом, соответствующим хостингу вашего конкретного конечного пользователя. Вы можете создать оболочку Hugo, в которой входные данные будут передаваться Hugo, а сгенерированные страницы будут находиться в папке public. Таким образом, вы должны полагаться на внешний инструмент (читай Хьюго) и желать иметь версию с долгосрочной поддержкой, как и многие другие системы (например, Ubuntu, Java, Windows).

(2) Создание подобного генератора, такого как Hugo или другого (см. СтатикГен для большего количества генераторов на разных языках). Вам может понадобиться ядро ​​генератора статических сайтов на основе Markdown, например, синтаксический анализатор Markdown, трансляторы и генераторы ссылок и т. д. Приложив дополнительные усилия, вы можете лучше контролировать каждый меньший компонент/библиотеку, которую вы используете, можете настроить сгенерированный артефакты, их назначение и т. д.

Примечание: Markdown — неплохой выбор для контента. Даже WordPress предлагает поддержку Markdown. Тем не менее, сам Markdown не стандартизирован, а скорее де-факто. Есть так много вкусов. Возможно, вы захотите найти или придерживаться хорошего, например, CommonMark.