JSFiddle - React, Tailwind, and code Playground

by 76484

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.10/handlebars.js"></script>

<script id="Template" type="text/template">
	{{#partialResolver (lookup . 'type')}}
		Template Not Found
	{{/partialResolver}}
</script>

JavaScript

var raw = document.getElementById('Template').innerHTML;
var template = Handlebars.compile(raw);

Handlebars.registerPartial('helloPartial', '<p>Hello, {{name}}!</p>');

Handlebars.registerHelper('partialResolver', function (partialName, options) {
	var partial = Handlebars.partials[partialName];

	if (partial && !Handlebars.Utils.isFunction(partial)) {
    	Handlebars.partials[partialName] = partial = Handlebars.compile(partial);
  }

  return (partial ? partial : options.fn)(this);
});

document.body.innerHTML = template({
	type: 'helloPartial',
  name: 'World'
});

document.body.innerHTML += template({
	type: 'unknownPartial',
  name: 'Foo'
});