如何将jade mixin编译成javascript用于客户端

时间:2014-08-07 16:41:32

标签: express pug

我有一些服务器和客户端都需要的mixin(动态渲染)。我正在使用Express,Grunt,如果有兴趣的话。

例如,请参阅以下mixin:

mixin book(data)
  .header data.title
  .description data.description

documentation说我们可以将jade模板预编译为javascript。但jade --client --no-debug book.jade只提供以下输出:

function template(locals) {
  var buf = [];
  var jade_mixins = {};
  var jade_interp;

  ;return buf.join("");
}

这很困惑。我发现其他一些人遇到了同样的问题,但没有解决方案,甚至没有给出进一步的解释。

那么,是否真的可以在服务器和客户端之间共享mixin?如果可能,怎么样?

1 个答案:

答案 0 :(得分:2)

这似乎有效:

<强>混入/ userItem.jade

mixin userItem(user)
    .user= user.name

+userItem(user)

这样您的模板就可以使用jade --client --no-debug mixins/userItem.jade正确编译。

这将按预期工作。 template({ user: { name: 'foo' })返回<div class='user'>foo</div>

你还可以在服务器端渲染中使用mixin:

<强> users.jade

include ./mixins/userItem

extends layout

block content
    each user in users
        +userItem(user)

<强> server.js

render('users', { users: [{ name: 'foo' }] });