Javascript 客户端模板引擎(Rivets.js)中的低性能渲染

Javascript 客户端模板引擎(Rivets.js)中的低性能渲染,javascript,jquery,html,templating,rivets.js,Javascript,Jquery,Html,Templating,Rivets.js,我正在渲染大约1000个对象的数组。html绑定非常繁重(见下文)。铆接.bind()大约需要5秒钟的时间 有关于提高绩效的建议吗?我认为我负担不起块绑定,因为我同时使用分页/排序库,需要整个数组才能进行排序/分页 以下是我对每个对象(轨迹)的HTML: {variation.track.name} {variation.track.tracklength} {track.genre} {track.mood} {track.track.tracklength} {track.lastPlay

我正在渲染大约1000个对象的数组。html绑定非常繁重(见下文)。铆接.bind()大约需要5秒钟的时间

有关于提高绩效的建议吗?我认为我负担不起块绑定,因为我同时使用分页/排序库,需要整个数组才能进行排序/分页

以下是我对每个对象(轨迹)的HTML:


{variation.track.name}
{variation.track.tracklength}
{track.genre}
{track.mood}
{track.track.tracklength}
{track.lastPlayed}
{track.track.name}
{track.track.staff|pickvalue}
{track.instrument}
{轨道工业}
{track.tempo}
{track.tag_list}{track.track.name}
{track.dateLastPlayed}
{variation.track.name}
{variation.track.tracklength}
{variation.track.name}
此曲目没有其他版本。

  • 不要铆接事件示例:rv单击会降低性能,因为您将传递回调方法的整个视图
  • 不要将整个视图传递给铆钉。bind()
  • 只传递必要的模型,然后执行此操作
  • 如果可能,首先绑定100个元素,然后如果用户滚动页面的一半,则再次绑定100个元素,这肯定会提高性能

  • 我在活页夹中做了以下更改,以使其即使在低端移动设备中也能运行得更快

    rivets.binders.text = function(el, value) { if (el.textContent != null) { return el.textContent; } else { return el.innerText; } }; 铆钉.binders.text=函数(el,值){ 如果(el.textContent!=null){ 返回el.textContent; } 否则{ 返回el.innerText; } };

我得出的结论是,是的,对于使用铆钉将1000+个(大型html)对象绑定到DOM,我有可能实现一些小的性能改进。然而,根本问题是,我试图一次将1000多个铆钉绑定到DOM中,而使用任何技术(我已经用React、jQuery、铆钉等进行了测试)都会很慢


解决这个问题的办法就是找到另一种方法。我选择在服务器上预呈现html,并通过API响应提供它。这将页面加载时间从~5s缩短到~1s。

这个答案有一些一般提示,但如果仔细阅读,它不适用于我的问题。我在活页夹中做了以下更改,使其即使在低端移动设备中也能运行得更快。\n rivets.binders.text=函数(el,value){if(el.textContent!=null){return el.textContent;}否则{return el.innerText;};我已经更新了答案,请告诉我是否有用 rivets.binders.text = function(el, value) { if (el.textContent != null) { return el.textContent; } else { return el.innerText; } };