Handlebars.js ist eine logiklose Template-Engine für JavaScript, die 2010 von Yehuda Katz (Mitbegründer von Ember.js) veröffentlicht wurde. Sie erweitert das ältere Mustache um Helper, Partials und Pfad-Ausdrücke und hält Präsentation strikt von Geschäftslogik getrennt.

Basis-Syntax

{{variable}}        <!-- einfache Ausgabe -->
{{#if bedingt}}      <!-- Bedingung -->
{{else}}
{{/if}}
{{#each liste}}      <!-- Schleife -->
  {{this}} (Index {{@index}})
{{/each}}
{{> partial}}       <!-- Partial einbinden -->

Helpers und Blöcke

Helper sind registrierte Funktionen, die Logik kapseln: Handlebars.registerHelper('link', function (text, url) { ... }). Eingebaute Block-Helper sind #if, #unless, #each und #with. Eigene Partials werden mit registerPartial() definiert und über {{> name}} eingebunden.

Kompilierung

var tmpl = Handlebars.compile(quelle);
var html = tmpl({ name: 'Welt' });

Handlebars ist als Superset von Mustache konzipiert — einfache Templates beider Engines sind weitgehend austauschbar. Verwandt: Mustache-Befehle, Pug-Befehle (einrückungsbasiert) und JavaScript-Befehle.