javascript - 如何覆盖 Mustache.js、Hogan.js 或 Handlebars.js 的默认输出插值?

标签 javascript templates handlebars.js mustache hogan.js

有没有办法改变 Mustache、Hogan 和 Handlebars 等库的默认输出?

以下是我的上下文示例:

var context = {
  primitive: 1,
  array: [1, 2, 3],
  object: new Object()
}

这就是我希望编译时的结果:

<div>
  Primitive: {{primitive}}
  Array: {{array}} should output <Array#id> instead of "1,2,3"
  Object: {{object}} should output <Object#id> instead of "[Object object]"
</div>

我知道我可以重写这些属性的 toString 方法,但是有没有其他方法,例如插值发生之前的回调?

最佳答案

对于霍根来说,可能会有,这取决于你真正想用它做什么; https://github.com/twitter/hogan.js#features

var text = "{{^check}}{{#i18n}}No{{/i18n}}{{/check}}";
text +=  "{{#check}}{{#i18n}}Yes{{/i18n}}{{/check}}";
var tree = Hogan.parse(Hogan.scan(text));

// outputs "# check"
console.log(tree[0].tag + " " + tree[0].name);

// outputs "Yes"
console.log(tree[1].nodes[0].nodes[0]);

标签被解析出来,您可以根据需要操作树,然后在完成后编译它

关于javascript - 如何覆盖 Mustache.js、Hogan.js 或 Handlebars.js 的默认输出插值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17129157/

相关文章:

handlebars.js - Handlebars #each 对象或数组

javascript - 你能在 css 文档中使用 handlebars.js 变量吗?

javascript - Promise.all() 中的第一个 promise 没有正确执行

javascript - 我的脚本只适用于台式机,不适用于移动设备。你能告诉我为什么吗?

c++ - 数组大小元函数 - 它在某处 boost 吗?

Python错误:No constructor defined in SWIG generated module of C++ templated code

c++ - 派生类型作为接受基类的模板的参数

javascript - Ember js 和 Handlebars - 每个都不起作用

javascript - 在 javascript 中用\\n 切换\n

javascript - appendTo 中的 [original] 是什么