使用帕格混合结果作为属性值

gan*_*dis 3 template-mixins pug

这是我要完成的工作的简化版本:

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

a(href= +foo("baz")) test
Run Code Online (Sandbox Code Playgroud)

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

我正在尝试通过mixin实现的目标吗?还是只有作为上下文变量传递常规JS函数才有可能?

Dev*_*lae 5

我认为您想为此使用无缓冲Javascript。对于您的用例,代码将像这样。

-
    function foo(bar) {
        return bar + ".html";
    }

a(href=foo("baz")) test
Run Code Online (Sandbox Code Playgroud)

这将导致以下HTML:

<a href="baz.html">test</a>
Run Code Online (Sandbox Code Playgroud)

说明

未缓冲的Javascript是模板逻辑,不会在最终结果中发出。未缓冲的JavaScript用短划线(-)注释。多行无缓冲Javascript由带有单个制表符缩进的破折号定义。

单线

-var foo = "bar"; 
Run Code Online (Sandbox Code Playgroud)

多线

-
    function randomNumber() {
        return 4;
    }
Run Code Online (Sandbox Code Playgroud)

文档:https : //pugjs.org/language/code.html