Прежде всего вы можете использовать то, что у вас сейчас есть, с небольшой модификацией (для того, чтобы сделать комментарии, вам нужен известный ключ). Если вы можете изменить данные, которые вы хотите передать движку, вы можете сделать что-то вроде этого:
<script type="text/javascript">
$(function () {
var posts = {blogs:[
{
title:"First blog post",
author:"John",
tags:["awesome", "interesting", "philosophical"],
comments:[
{name:"juli", comment:"I love it"},
{name:"foo", comment:"bar"}
]
},
{
title:"Second blog post",
author:"Jill",
tags:["extraordinary", "crazy", "nice"],
comments:[
{name:"juli", comment:"I love it"},
{name:"foo", comment:"bar"}
]
}
]};
var template = $("#template").html();
var output = Mustache.render(template, posts);
console.log(output);
});
</script>
<script id="template" type="x-template">
{{#blogs}}
<div>{{title}}</div>
<div>{{author}}</div>
<ul>
{{#tags}}
<li>{{.}}</li>
{{/tags}}
</ul>
<ul>
{{#comments}}
<li>{{name}}: {{comment}}</li>
{{/comments}}
</ul>
{{/blogs}}
</script>
Если вы не можете изменить ввод, я советую вам перейти на Handlebars.js , где вы можете написать вспомогательную функцию, которая извлекает key-val из данных шаблона:
Посмотрите на этот пример от Майкл Миор для подробностей.
Работа со многими вложенными слоями
Когда данные содержат много вложенных слоев, рассмотрите возможность использования партиалов для разделения шаблонов. Например, вы можете иметь один шаблон для автора, один для тегов, а другой для комментариев и вкладывать их.
//Blog template
{{#blogs}}
{{title}}
...
//delegate rendering of tags to a partial template
{{> tags}}
{{> comments}}
{{/blogs}}
Документ Усы содержит дополнительную информацию об использовании партиалов.