Question

What is the difference between:

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

in the new mustache.js version 0.5.0, and perhaps for bonus points you could tell us what the difference between parsing and compiling is in general.

Was it helpful?

Solution

EDIT

With an API change introduced in version 0.8.0, the compile() method has been integrated into parse(). Manually compiling the templates is no longer required.


Mustache.parse()

Syntactically parses the template and creates a JavaScript function body (a string) from it. During that process it notifies of any syntax errors encountered in the template.

Mustache.compile()

Uses the function body returned from a successful parse() to create an actual JavaScript function. The created function is placed in a cache for re-use.

Mustache.render()

Takes the appropriate function for a given template (the one that was created by compile()) and applies it to actual data. This creates the result meant to be shown on screen.

OTHER TIPS

Just a tip Mustache.parse(template) is optional and speeds up future uses of template. This is useful when you want to reuse your template with a set of (large) data. If this is not the case a call to the Mustache.render(), which generates the final result, is enough.

A little extra: If you working with custom delimiters (instead of {{ and }}), you can use Mustache.parse before calling the Mustache.render with the custom delimiters as a parameter.

Example:

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

Will result In:

Hello John
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top