如何在浏览器客户端使用nunjucks宏?

时间:2014-10-18 18:18:02

标签: javascript node.js nunjucks

我可以使用nunjucks的客户端模板,因为我从node.js预编译并公开JS模板文件。我像这样调用客户端模板:

nunjucks.render('partials/some-template.html', { abc: 123 })

并返回一个字符串。

我怎么能按照我的尝试调用宏,但这样做错了。首先按照node.js在页面上声明宏,然后在Node.js中调用连续的时间:

{% include 'macros/checkbox.html' %}
...
{{ checkbox('you cool?', 'cool', false) }}
{{ checkbox('you collected?', 'collected', false) }}

但不确定如何获取宏,然后在客户端再次调用它。到目前为止,我确实努力在控制台中进行检查,但没有运气。

1 个答案:

答案 0 :(得分:3)

当我想在客户端渲染宏时,我使用nunjucks.renderString方法导入包含宏的文件然后调用它 - 一次性完成。我的用例是将宏呈现为HTML,然后使用Javascript将其添加到页面中。一个示例用例是:

window.addEventListener("load", function() {

  function onTwttrReady() {
    twttr.events.bind('tweet', function(e){
      if(!e) return;
      ga('send', 'social', 'twitter', 'tweet', theURL);
      console.log('tweet');
    })
  }

  if (window.twttr) {
    onTwttrReady();
  } else {
    document.getElementById('twitter-wjs')
            .addEventListener('load', onTwttrReady);
  }
});