Как использовать макросы nunjucks на стороне клиента браузера?

Я могу использовать шаблоны на стороне клиента для nunjucks, поскольку я предварительно компилирую из node.js и открываю файлы шаблонов JS. Я вызываю клиентские шаблоны так:

nunjucks.render('partials/some-template.html', { abc: 123 })

и получить строку обратно.

Как я могу вызывать макросы, как я пытался, но делаю это неправильно. Макросы сначала объявляются на странице в терминах node.js, а затем последовательно вызываются, например, в Node.js:

{% include 'macros/checkbox.html' %}
...
{{ checkbox('you cool?', 'cool', false) }}
{{ checkbox('you collected?', 'collected', false) }}

Но не уверен, как получить макрос, а затем снова и снова вызывать его на стороне клиента. До сих пор я пытался пройти проверку в консоли, но безуспешно.


person King Friday    schedule 18.10.2014    source источник


Ответы (1)


Когда я хотел отобразить макрос на стороне клиента, я использовал nunjucks.renderString для импорта файла, содержащего макросы, а затем вызвать его — все за один раз. Мой вариант использования - это рендеринг макроса в HTML, а затем добавление его на страницу с помощью Javascript. Пример использования:

var renderString = "{% import 'packageForms.html' as forms %} \n";
renderString = renderString + '{{ form.packageForm("task") }}';
var renderedHTML = nunjucks.renderString(renderString);
$('#page').append(renderedHTML)
person John O'Sullivan    schedule 14.07.2015
comment
Имейте в виду, что в «тонкой» версии нет renderString - person aaaaaa; 28.11.2016