gpt4 book ai didi

javascript - 主干删除 View 和 DOM 节点

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:51:53 25 4
gpt4 key购买 nike

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

我觉得这不对,我觉得我搞砸了一些非常基本的东西,因为问题似乎出现在我所有的观点上,而不仅仅是这些观点。由于 View 列表太多,因此使用这些 View 列表会发生得更快。

有人对我应该寻找什么有什么建议吗?什么样的原因会产生这种行为?

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

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

最佳答案

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

阅读: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/

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

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

关于javascript - 主干删除 View 和 DOM 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11589673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com