мини JS шаблонизатор

мини JS шаблонизатор

by Сергей Тарасевич

HTML

<div data-content="1">Меня зовут {$name}! - Мне {$years}</div>
<br>
<div data-content="2">Меня зовут {$name}! - Мне {$years}</div>
<br>
<div data-content="3">Меня зовут {$name}! - Мне {$years}</div>

JavaScript

function tpl(a, b) {
  b && (a = a.replace(/\{\$([^}]+)}/g, function(a, e) {
    return e in b ? b[e] : a
  }));
  return a
}

function contentEach(a) {
  $(a).each(function() {
    var t = $(this);
    t.html(tpl(t.html(), obj[t.data('content')]));
  });
}

var obj = {
  1: {
    name: 'Вася',
    years: '23'
  },
  2: {
    name: 'Маша',
    years: '19'
  },
  3: {
    name: 'Лёня',
    years: '27'
  }
}

$(document).ready(function() {
  contentEach('[data-content]');
});