【问题标题】:node.js jade template - custom syntax and replacements?node.js 玉模板 - 自定义语法和替换?
【发布时间】:2011-12-11 11:34:43
【问题描述】:

我正在尝试让翡翠自动为我生成网址:

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

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

我希望能够将其替换为(假设语法):

.userLink
  userLink(#{user})

无论如何要这样做?

谢谢

编辑:好的,我明白了:

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

mixin userLink("Bob")

似乎这样会奏效。

【问题讨论】:

  • 不错!很高兴你解决了问题。

标签: templates node.js express pug


【解决方案1】:

更新:

这是一个使用翡翠混合器的版本。可悲的是,我似乎无法在“a”标签的括号属性列表中找到“用户”变量。

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})

然后在你的翡翠模板中做:

= userLink(user)

您可能还想看看可能注册dynamicHelper function

【讨论】:

  • 我在客户端使用jadevu和jade,所以这对我来说不是一个好的选择。我也想继续在jade中做模板,而不是在JS中。
  • 呃,如果“模板化的东西”涉及函数,它就不会发生。代码准备数据,jade 将其吐出到 HTML 中。
  • 啊,mixins 是一个新东西,我没怎么玩过。我会更新我的答案,但玉似乎没有在属性列表中引用 mixin 参数。
猜你喜欢
  • 2020-07-17
  • 1970-01-01
  • 2013-03-05
  • 2015-11-09
  • 2016-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多