Я недавно создал шаблонизатор DOM, вдохновленный PURE и Transparency.
Он поддерживает циклы, условия и многое другое.
Взгляните на документ: http://code.meta-platform.com/metajs/components/template/
Не бойтесь, что MetaJS - большая библиотека, шаблонизатор lib может использоваться автономно.
Краткий пример:
HTML:
<div id="tpl">
<ul id="tasks">
<li>
<span class="task"></span>
<span class="due-date"></span>
</li>
</ul>
</div>
Определение шаблона:
var tpl = Meta.Template(document.getElementById('tpl'), {
"ul#tasks li": $__repeat("tasks", {
".task": "task",
".due-date": $__date("d. m. Y", "due_date"),
"@": $__attrIf("completed", "complete")
})
});
Визуализация шаблона:
tpl({
tasks: [
{
task: "Write concept",
due_date: new Date(2015, 3, 22, 0, 0, 0, 0),
complete: true
}, {
task: "Consult with customer",
due_date: new Date(2015, 3, 25, 0, 0, 0, 0),
complete: false
}
]
});
Результат:
<div id="tpl">
<ul id="tasks">
<li>
<span class="task" completed>Write concept</span>
<span class="due-date">22. 3. 2015</span>
</li>
<li>
<span class="task">Consult with customer</span>
<span class="due-date">25. 3. 2015</span>
</li>
</ul>
</div>