2

简而言之,我需要 - 以编程方式(不是 CLI)将车把模板预编译为浏览器端功能,并在浏览器handlebars.runtime.js中以这种方式使用它:

html = template_as_fn(data_object);

为什么我需要它——我在 YA ComonJS 上工作到浏览器打包工具,我也想支持 Handlebars

因此,我正在寻找正确的方法来预编译 Handlebars 模板以使其发挥作用,而无需eval()其他巫术魔法。

这个答案中的事情

var data = { name: "Greg" };
var source = "<p>Howdy, {{ name }}</p>";

eval("var templateFunction = " + Handlebars.precompile(source));
var template = Handlebars.template(templateFunction);

template(data);
=> "<p>Howdy, Greg</p>"

让我伤心。

例如,使用 Jade,我可以通过这种方式使用文件处理器

'.jade'   : (data, filename, cb) ->
  content = Jade.compile data, _.assign jade_settings, {filename}
  cb null, "module.exports = #{content}"

有没有可能用把手做类似 Jade 的事情?

4

1 回答 1

1

哦,没关系!我找到了。

Handlebars 文件处理器

'.handlebars', (data, filename, cb) ->
  content = Handlebars.precompile data
  cb null, "module.exports = #{content}"

在模块两步解决方法中:

renderData : (data) ->
  template_fn = require './template' # /template.handlebars
  template = Handlebars.template template_fn

  res = template data

所以,从现在开始,clinch将支持 Handlebars :)

于 2013-03-17T08:53:39.100 回答