JSFiddle - React, Tailwind, and code Playground

JavaScript

String.prototype.template = function(data, prefix) {
  if (this == null) {
    return '';
  }

  if (!prefix) {
    prefix = '';
  } else {
    prefix += '.';
  }

  var result = String(this);

  forEach(params, function(key, value) {
    if (typeof value == 'object') {
      result = result.template(value, prefix+key);
    } else {
      result = result.replace('{'+prefix+key+'}', (typeof value == 'function' ? value() : value));
    }
  });

  return result;
};