mustache.js中compile(),parse()和render()之间的区别

时间:2012-02-21 20:27:55

标签: javascript templates mustache

有什么区别:

Mustache.compile()Mustache.parse(),和 Mustache.render()

在新的mustache.js版本0.5.0中,也许对于奖励积分,您可以告诉我们解析和编译之间的区别是什么。

3 个答案:

答案 0 :(得分:17)

编辑

使用API change introduced in version 0.8.0compile()方法已集成到parse()中。不再需要手动编译模板。


Mustache.parse()

从语法上解析模板并从中创建一个JavaScript函数体(一个字符串)。在此过程中,它会通知模板中遇到的任何语法错误。

Mustache.compile()

使用从成功的parse()返回的函数体来创建实际的JavaScript函数。创建的函数放在缓存中以便重复使用。

Mustache.render()

为给定模板(由compile()创建的模板)采用适当的函数并将其应用于实际数据。这样就可以在屏幕上显示结果。

答案 1 :(得分:2)

只需提示Mustache.parse(template)是可选的,可加快模板的未来使用。当您想要将模板与一组(大)数据一起使用时,这非常有用。如果不是这种情况,那么调用生成最终结果的Mustache.render()就足够了。

答案 2 :(得分:1)

一些额外的内容: 如果您使用自定义分隔符(而不是{{}}),则可以在使用自定义分隔符作为参数调用Mustache.parse之前使用Mustache.render

示例:

var template = "<h1>Hello {{$name$}}</h1>"
var customTags = [ '{{$', '$}}' ];
Mustache.parse(template, cutomTags);
var result = Mustache.render(template, { name: "John" };
console.log(result);

将结果输入:

Hello John