Используйте результат pug mixin в качестве значения атрибута
Вот упрощенная версия того, что я пытаюсь достичь:
mixin foo(bar)
= bar + ".html"
a(href= +foo("baz")) test
Я хотел бы, чтобы тег привязки был скомпилирован как <a href="baz.html">test</a>
Но вместо этого я получаю ошибки типа foo
не будучи функцией. Хотя я вижу, что технически это не функция, разве это не сценарий, в котором миксин был бы полезен? Я искал в документации по мопсу сценарии использования, похожие на мои, но безуспешно.
Возможно ли здесь то, чего я пытаюсь достичь с помощью миксинов? Или это возможно только с обычными функциями JS, передаваемыми в качестве переменных контекста?
2 ответа
Я думаю, что вы хотите использовать небуферизованный Javascript для этого. Для вашего случая использования код будет таким.
-
function foo(bar) {
return bar + ".html";
}
a(href=foo("baz")) test
Это приведет к следующему HTML:
<a href="baz.html">test</a>
объяснение
Небуферизованный Javascript - это логика шаблона, которая не будет генерироваться в конечном результате. Небуферизованный Javascript помечается тире (-
). Многострочный небуферизованный Javascript определяется дефисом с отступом в одну вкладку.
Одна линия
-var foo = "bar";
Мульти линия
-
function randomNumber() {
return 4;
}
Документация: https://pugjs.org/language/code.html
Просто передаю пример с использованием миксинов:
Определение
mixin aLink(href, name)
a(href=href)&attributes(attributes)= name
Применение
+aLink('https://stackoverflow.com/', 'Stack Overflow')(class='text-orange')