Данные JSON в nunjucks шаблонизируются, используя gulp-данные
Я хотел бы использовать данные JSON внутри nunjucks "set". Минимальный пример:
index.html
{% set divname='foo' %}
{% include 'template.nunjucks' %}
template.nunjucks
<div class="{{divname}}"></div>
Который прекрасно работает. Я хотел бы переместить данные, например, divname, из файла index.html в файл JSON, назовем его data.json:
{
"div_name": "foo"
}
Используя gulp-data, мы можем прочитать этот файл data.json и использовать {{div_name}} почти в любом месте index.html..almost. Кажется невозможным использовать {{div_name}} внутри содержимого nunjucks, вероятно, из-за вложенного {?
{% set divname='{{div_name}}' %}
не может получить данные JSON, вывод
<div class="{{divname}}"></div> instead of <div class="foo"></div>
Очень упрощенная причина для того, чтобы хотеть такого поведения, состоит в том, что в data.json я могу определить несколько divnames (divname1=foo, divname2=bar, divname3=ball) и затем повторно использовать template.nunjucks. Когда разметка в template.nunjucks или index.html становится очень сложной, это отличный способ использовать всю мощь шаблонизаторов. Реальный вариант использования - это очень длинный / полусложный шаблон AWS CloudFormation, в котором имена ресурсов используются во многих местах, а помимо этого различные файлы data.json используются для сред разработки и разработки. Перемещение значений в dev-data.json и prod-data.json с сохранением только одного "индексного" файла для определения инфраструктуры, который извлекает шаблоны, сделает работу более удобной для сопровождения.
{% set divname={{divname1}} %}
{% include 'template.nunjucks' %}
{% set divname={{divname2}} %}
{% include 'template.nunjucks' %}
DEV-data.json
divname1 = dev-foo
divname2 = dev-bar
прод-data.json
divname1 = foo
divname2 = bar
Вуаля, разные данные для dev и prod с одним файлом index.html для поддержки
1 ответ
Никогда не использовал nunjucks раньше, но я думаю, вы могли бы снять скобки вокруг title_data
вset
заявление: {% set title = title_data %}
,
Но зачем беспокоиться о переназначении, если у вас уже есть дескриптор строки заголовка. Просто шаблон это напрямую: <title>{{ title_data }}</title>