【发布时间】:2012-02-21 20:27:54
【问题描述】:
有什么区别:
Mustache.compile() ,
Mustache.parse(),和
Mustache.render()
在新的mustache.js 0.5.0 版中,也许您可以告诉我们解析和编译之间的一般区别是什么。
【问题讨论】:
-
阅读源代码,我有,但仍然看不出来。
标签: javascript templates mustache
有什么区别:
Mustache.compile() ,
Mustache.parse(),和
Mustache.render()
在新的mustache.js 0.5.0 版中,也许您可以告诉我们解析和编译之间的一般区别是什么。
【问题讨论】:
标签: javascript templates mustache
编辑
通过API change introduced in version 0.8.0,compile() 方法已集成到parse()。不再需要手动编译模板。
Mustache.parse()
从语法上解析模板并从中创建一个 JavaScript 函数体(一个字符串)。在该过程中,它会通知模板中遇到的任何语法错误。
Mustache.compile()
使用从成功的parse() 返回的函数体来创建一个实际的 JavaScript 函数。创建的函数被放置在缓存中以供重复使用。
Mustache.render()
为给定模板(由compile() 创建的模板)获取适当的函数并将其应用于实际数据。这将创建要在屏幕上显示的结果。
【讨论】:
提示Mustache.parse(template) 是可选的,可加快模板的未来使用速度。当您想将模板与一组(大)数据一起使用时,这很有用。如果不是这种情况,调用Mustache.render()(生成最终结果)就足够了。
【讨论】:
一点额外的:
如果您使用自定义分隔符(而不是 {{ 和 }}),您可以在使用自定义分隔符作为参数调用 Mustache.render 之前使用 Mustache.parse。
例子:
var template = "<h1>Hello {{$name$}}</h1>"
var customTags = [ '{{$', '$}}' ];
Mustache.parse(template, cutomTags);
var result = Mustache.render(template, { name: "John" };
console.log(result);
将导致:
Hello John
【讨论】: