0.1.3 • Published 4 years ago

mustache-async v0.1.3

Weekly downloads
Last release
4 years ago

mustache-async.js - Logic-less {{mustache}} templates with async view function Support

Build Status Known Vulnerabilities

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.

  template            : String,
  view                : Object,
  partials?           : Object,
  tags = ['{{', '}}'] : Tags,
) => String

  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