Когда AJAX начал набирать обороты, в конце 2005 года я написал клиентский шаблонизатор и по сути превратил свой шаблон блоггера в полноценный AJAX.
Дело в том, что этот шаблонный шаблон был действительно прост в реализации, и это исключило большую часть тяжелой работы.
Вот как это было сделано.
<div id="blogger-post-template">
<h1><span id="blogger-post-header"/></h1>
<p><span id="blogger-post-body"/><p>
<div>
А потом в JavaScript:
var response = // <- AJAX response
var container = document.getElementById("blogger-post-template");
if (!template) { // template context
template = container.cloneNode(true); // deep clone
}
// clear container
while(container.firstChild)
container.removeChild(template.firstChild);
container.appendChild(instantiate(template, response));
Функция instantiate создает глубокий клон шаблона, а затем ищет в нем идентификаторы для замены данными, найденными в ответе. Конечным результатом является заполненное дерево DOM, которое изначально было определено в HTML. Если у меня было более одного результата, я просто перебрал код выше.