Node.js Jade模板——自定义语法和替换?

5

我想让Jade自动为我生成URL:

如果我有像这样的用户链接:

.userLink
  a(href="/#{user}") #{user}

我希望能够用类似以下的语法(假设)替换它:
.userLink
  userLink(#{user})

有什么办法可以做到这一点吗?
谢谢。
编辑:好的,我明白了。
mixin userLink(user)
  a(href="/" + user)= user

mixin userLink("Bob")

看起来那应该可行。

不错!很高兴你解决了那些故障。 - Peter Lyons
1个回答

3

更新:

这里有一个使用Jade Mixins的版本。不幸的是,在“a”标签的括号属性列表中似乎找不到“user”变量。

mixin userLink(user)
  a(href="/" + user)= user

mixin userLink("Bob")
mixin userLink("Alice")
mixin userLink("Cooper")

生成此HTML
<a href="/undefined"></a> Bob
<a href="/undefined"></a> Alice
<a href="/undefined"></a> Cooper

只需要将一个辅助函数放入本地对象中,然后从模板中调用即可。
locals = {userLink: function(userName) { return "<a href=....."}}

jade.render('myview', {locals: locals})

然后在你的jade模板中这样做:

= userLink(user)

你可能还想考虑注册一个dynamicHelper函数


我在客户端使用jadevu和jade,所以那对我来说不是一个好选择。我还想将模板内容保留在jade中,而不是在JS中。 - Harry
如果“模板化的东西”涉及到函数,那就不会发生。代码准备数据,jade将其转换为HTML。 - Peter Lyons
啊,混合是我还没有玩过太多的新东西。我会更新我的答案,但jade似乎没有在属性列表中引用混合参数。 - Peter Lyons

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接