// This does mostly the same as that example from the official docs let simple = () => { let template = Handlebars.compile("Handlebars {{doesWhat}}") let out = template({ doesWhat: "rocks!" }) console.log(out) return out } // This is how handlebars comments work let comments = Handlebars.compile(` {{! This comment will not show up in the output}} {{!-- This comment may contain mustaches like }} --}} inspect element here!`)() // This uses each for context switching and uses a nested links parameter let nested = Handlebars.compile(` `)({ links: [{ 'href': 'https://handlebarsjs.com/guide', 'text': 'Handlebars official guide' }, { 'href': 'https://io.sivert.pw', 'text': 'Awesome blog!' }] }) // Simple helper Handlebars.registerHelper('censor', (str) => { return str.replaceAll('fuck', 'f***').replaceAll('hell', 'h***') }) // Block helper Handlebars.registerHelper('noop', (options) => { return options.fn(this) }) // Handlebars registered partial Handlebars.registerPartial('people', ` `) // Calling non-existent partials with block syntax uses the block content as fallback let advanced = Handlebars.compile(` {{censor profanity}} {{#> people members}} Some thing went wrong, man! {{/people}} `)({ 'profanity': 'fuckin hell man!', 'members': [{ 'home': 'Never Never Land', 'name': 'Peter', 'age': 120 }, { 'home': 'Trollhättan', 'name': 'Clark', 'age': 75 }] }) // Run "main" after all is loaded document.addEventListener("DOMContentLoaded", function () { // Add a output element to the end of the Table of Contents let output = document.createElement('div') output.id = 'output' document.getElementById('meta').append(output) // When creating a partials you may use {{> @partial-block }} to capture the block content Handlebars.registerPartial('layout', '
{{> content }}
') // Here we use those "triple mustaches"! let template = Handlebars.compile(` {{#> layout}} {{#*inline "content"}}

Examples output:

Functions:

Simple: {{{simple}}}

Nested: {{{nested}}}

Comments: {{{comments}}}

Advanced: {{{advanced}}}

{{/inline}} {{/layout}}`) // Render and insert the template above output.innerHTML = template({ simple: simple(), nested: nested, comments: comments, advanced: advanced }) })