Я сомневаюсь, что Hugo и React — хорошая пара, но это не по теме, и я могу ошибаться. Вы спрашиваете, как добавить переменные Hugo в JavaScript веб-сайта. Мой ответ:
Hugo — это статический движок веб-сайта, поэтому он только конвертирует шаблоны и документы разметки (с вашим контентом) в файлы HTML. Теперь, когда вы загружаете свои файлы на свой сервер, ваш JS ничего не видит Hugo — только ваши файлы.
Возникает вопрос, как перенести переменные Hugo в некоторые файлы вашего сайта.
Как вы предложили, лучше всего записывать переменные в свой HTML (или JSON) с помощью Hugo, а затем читать их с помощью JS. Если это небольшое количество, используйте атрибуты или теги. Если их много и они не отличаются для каждой страницы, используйте отдельный файл JSON.
Например, лично у меня есть многоязычный сайт, который а) требует динамического отображения названий на разных языках через JS; б) использует JS, который запрашивает различные поисковые индексы Lunr.js в формате JSON.
Для обоих я использую атрибуты data-<name>
:
<section class="section-search" data-index="{{ .Site.BaseURL }}searchIndex.json" id="section-search">
<input type="search" id="search-input" placeholder="{{ ( index $.Site.Data.translations $.Site.Params.locale ).dataloading }}" data-loaded="{{ ( index $.Site.Data.translations $.Site.Params.locale ).dataloaded }}">
<!-- search button goes here -->
</section>
Например, в английских шаблонах (преобразованных в /public/
) атрибут data-loaded
будет на английском языке, но для литовских шаблонов (преобразованных в /public/lt/
) атрибут data-loaded
будет на литовском языке.
Я бы не стал беспокоиться о «растущих метатегах», но вы могли бы записать переменные в файл JSON, а затем прочитать его в JS, если вас беспокоит раздувание HTML?
Сначала я создаю собственный JSON как HTML, а затем минимизирую/переименовываю его в JSON при создании индексов для поиска Hugo Lunr в соответствии с этот рецепт. Вместо того, чтобы «запекать» содержимое с помощью range
, как в упомянутом рецепте, вы можете просто перечислить все переменные.
Кстати, я использую npm scripts
в качестве средства запуска сборки (вместо Grunt/Gulp), поэтому я использую json-минимизировать:
"index:prepare": "json-minify public/json/index.html > public/site-index.json",
Вы можете «запечь» файлы JSON с любым содержимым (включая переменные шаблона Hugo) через Hugo таким образом. Надеюсь, поможет.
person
revelt
schedule
03.06.2016