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.