3

这是我要完成的内容的简化版本:

mixin foo(bar)
    = bar + ".html"

a(href= +foo("baz")) test

我希望将锚标记编译为<a href="baz.html">test</a>,但我得到的是类型错误,而foo不是函数。虽然我确实看到它在技术上不是一个函数,但这不是一个 mixin 有用的场景吗?我在 pug 文档中搜索了与我类似的用例场景,但没有成功。

使用mixins可以实现我在这里实现的目标吗?或者这只有通过作为上下文变量传递的常规 JS 函数才有可能?

4

2 回答 2

6

我认为您想为此使用无缓冲的 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

于 2017-01-05T14:03:15.357 回答
0

只是传递一个使用 mixins 的示例:

定义

mixin aLink(href, name)
    a(href=href)&attributes(attributes)= name

用法

+aLink('https://stackoverflow.com/', 'Stack Overflow')(class='text-orange')
于 2022-02-03T18:14:16.157 回答