使用多个模板渲染一个集合

时间:2011-10-13 15:33:24

标签: javascript backbone.js templating

我正在构建新闻Feed类型功能,该功能需要客户端呈现Feed项。有不同类型的Feed项,这意味着每种类型都需要不同的模板。我目前正在使用 UnderscoreJS 模板,但我愿意接受新的想法。

我使用的方法大致如下:

template : {
    f : "<li> <%= item.user.name %> uploaded a file </li>", // file upload
    m : "<li> <%= item.user.name %> just joined </li>", // just joined
    p : "<li> <%= item.user.name %> - <%= item.data.txt %> </li>" // comment
}

var html="";

for(i in feeditems){
    var item = feeditems[i];
    html+= _.template(template[item.type], { item: item });
}

$('#container').html(html);

这是解决此问题的最佳方法吗?

1 个答案:

答案 0 :(得分:1)

From Underscore.js documentation

<强>模板

  

将JavaScript模板编译为可以评估渲染的函数。用于从JSON数据源渲染复杂的HTML。

根据我的阅读,它应该非常有效。

  

效率最高吗?

很难说,最有效的方法就是硬编码字符串不是吗?但是,根本没有查找,有时为了获得更易读的代码而牺牲效率会更好。

你有任何性能问题吗?如果你不这样做,我不担心。如果你这样做,而不是考虑这是否是最有效的模板,我会分析应用程序,因为很可能瓶颈在其他地方。