我一直在研究 Backbone,看看这个框架是否是一个不错的选择,可以从现在开始构建我们的应用程序。一个要求是我们必须支持 Internet Explorer 7+,另一个要求是每页至少显示 200 个项目。
为了测试该框架,我构建了一个非常简单的列表,它在除 Internet Explorer 7 之外的所有主要浏览器中都能完美运行。似乎存在一些内存泄漏,因为每次我重置数据时总渲染时间都会增加。
我设置了一些测试场景:
事件声明:http://jsfiddle.net/mefraimsson/a2YMF/
没有声明事件:http://jsfiddle.net/mefraimsson/u6byQ/
我的一个想法是,当元素被删除并添加到 DOM 时,声明的事件从未被清除。当我运行“没有声明事件”的测试场景时,经常单击“重新加载数据”,渲染时间非常稳定,但运行“声明事件”时,渲染时间会迅速增加,并且 IE7 使用的内存量也会增加。这就是为什么我认为某处存在内存泄漏的原因。
- 有没有人有使用 Backbone 渲染如此大量数据的经验?
- 有没有人在使用 Backbone 时遇到过内存泄漏问题?
- 在使用 Backbone 处理如此大量的数据时,您是否推荐另一种方法?代替大量 subview ,使用一个 View 并迭代模板中的数据可能是一种可能的解决方案,但是感觉您没有充分利用 Backbone?
- 您的意见是什么,您认为它与事件的声明有关还是泄漏内存的 Backbone 的实现?
提前致谢
最佳答案
内存泄漏通常是 Javascript 应用程序中的常见问题。我认为有一些框架会尝试为您处理这个问题,但 backbone 不会。您使用的浏览器确实对这些泄漏的发现方式和它们引起的问题有所不同,但它们也仍然存在于其他浏览器中。通常不是浏览器有问题,而是在 Javascript 中通过使用回调函数处理事件绑定(bind)的方式。
我写了一篇文章讨论这个问题,并提出了处理它的方法的建议,特别是观点:http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/
请务必阅读评论。还有其他一些处理内存泄漏的好建议。
关于javascript - Internet Explorer 7/Backbone 中可能存在内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7715666/