This repository is no longer maintained and has been archived. Feel free to browse the code, but please migrate to other solutions.
mustache-async.js is a fork of the mustache.js template system, with async view function support. If you don't need to use async functions to generate substitution values, you should simply use mustache.js which supports older browsers and older JS versions.
Mustache is a logic-less template syntax. It can be used for HTML, config files, source code - anything. It works by expanding tags in a template using values provided in a hash or object. Visit the manpage for the templating syntax.
mustache-async.js supports regular functions, async functions and Promises. Example:
const view = {
firstName: 'Art',
lastName: 'Vandelay',
fullName: function() {
return this.firstName + ' ' + this.lastName;
},
profession: async () => new Promise(resolve => setTimeout(() => resolve('Architect'), 10))
}
const template = 'My name is {{fullName}}, I am an {{profession}}';
console.log(await Mustache.render(template, view));
//My name is Art Vandelay, I am an Architect
In this example, the Mustache.render
function takes two parameters: 1) the mustache template and 2) a view
object that contains the data and code needed to render the template.
You can get Mustache via npm.
$ npm install mustache-async --save
mustache-async.js is a new project, any contribution are welcome! Visit the issues page
Following is an rtype signature of the most commonly used functions.
Mustache.render(
template : String,
view : Object,
partials? : Object,
tags = ['{{', '}}'] : Tags,
) => String
Mustache.parse(
template : String,
tags = ['{{', '}}'] : Tags,
) => Token[]
interface Token [String, String, Number, Number, Token[]?, Number?]
interface Tags [String, String]
More info and API reference on mustache.js github page