Mustache (template system)

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Mustache (template system)
Initial release 2009 (2009)
License MIT

Mustache is a simple web template system with implementations available for ActionScript, C++, Clojure, CoffeeScript, ColdFusion, D, Delphi, Erlang, Fantom, Go, Java, JavaScript, Lua, .NET, Objective-C, Pharo, Perl, PHP, Python, Ruby, Scala and XQuery.

Mustache is described as a "logic-less" system because it lacks any explicit control flow statements, like if and else conditionals or for loops; however, both looping and conditional evaluation can be achieved using section tags processing lists and lambdas.

It is named "Mustache" because of heavy use of curly braces that resemble a mustache.

Mustache is used mainly for mobile[1] and web[1][2] applications.

History and principles[edit]

Mustache-1 was inspired by ctemplate and et,[3] and started as a GitHub distribution at the end of 2009. A first version of the template engine was implemented with Ruby, running YAML template texts. The (preserved) main principles were:

The input data can be a class, so input data can be characterized as an MVC-view. The Mustache template does nothing but reference methods in the (input data) view.[3] All the logic, decisions, and code is contained in this view, and all the markup (ex. output XML) is contained in the template. In an MVP context: input data is from MVP-presenter, and the Mustache template is the MVP-view.

Examples[edit]

The simplest template:

Hello {{name}}

Template with section tag:

{{#x}}
Some text
{{/x}}

Here, when x is a Boolean value then the section tag acts like an if conditional, but when x is an array then it acts like a foreach loop.

Technical details[edit]

Syntax highlighting is available in Vim, Emacs,[4] TextMate and Coda.

The Mustache templates support is built into many web application frameworks (ex. CakePHP). The support in JavaScript includes both client-side programming with many popular JavaScript libraries and Ajax frameworks like jQuery, Dojo and YUI, as well as server-side JavaScript using Node.js and CommonJS.

Specification and implementations[edit]

There are many Mustache Engine implementations available, and all of them meet a common specification (see external links) — that for final users results in the common syntax. The last SPEC_VERSION is 1.1.2.

All Mustache Engines, in the v1.X architecture, have a render method, a Mustache_Compiler class and a Parser class.

References[edit]

  1. ^ a b "Smashing Mobile Web Development", G. Avola and J. Raasch, 2012. ISBN 9781118348123.
  2. ^ "Functional Programming Applied to Web Development Templates", J. Cady, 2011. MS Project Report.
  3. ^ a b https://github.com/defunkt/mustache/blob/master/README.md
  4. ^ http://web-mode.org

External links[edit]