Backbone删除视图和DOM节点

所以我注意到我的应用程序在一些扩展使用后变慢了。 特别是当我创建许多视图时,这些视图是长列表中的每个项目。 我原以为通过view.remove()删除这些视图有助于解决问题但是当它们从页面中删除时,我注意到Chrome的时间轴显示我的DOM节点数没有减少。 我添加的每个视图都会继续增加这个数量。 事实上,似乎唯一减少此节点计数的是页面刷新。

这对我来说感觉不对,我觉得我搞砸了一些非常基本的东西,因为问题似乎发生在我的所有观点而不仅仅是这些观点。 这些视图列表的发生速度要快得多,因为它们有很多。

有没有人对我应该寻找什么有任何建议? 什么样的原因可以产生这种行为?

我提供代码,但我不知道什么是有用的。

TL; DR – View.remove()正在从页面中删除视图,但我的DOM节点计数继续上升并且永远不会下降。

由于未正确清理视图而导致内存泄漏。

阅读本文: http : //lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

这个: http : //lostechies.com/derickbailey/2012/03/19/backbone-js-and-javascript-garbage-collection/

您需要做的不仅仅是在视图上调用.remove() 。 当您尝试关闭视图时,需要正确销毁所有挂起的事件和其他绑定。 一种常见的方法是在视图上提供一种close方法,我在第一篇文章中对此进行了描述。

请务必在第一篇文章中阅读Johnny Oshika的评论。 它指出了实现事件清理的好方法。