调试并修复 Vue 2 应用的内存泄漏问题
其实这篇文章一 两几个月前就该写出来了,甚至在调试问题的过程中就已经在构思文章的结构了。但由于懒某些原因,一直没有动键盘笔。几天间惊闻 Vue 3 已经 RC Release 了,再不写出来,恐怕就没有人会看了。写得再早也没有人会看的吧
TL;DR
- 不要用
<keep-alive>
- 如果一定要用,请给 Vue 打几个 patch (建议使用 ds300/patch-package ,应用的 patch 参考这里)
- 每次
addEventListener
都要记得在适当的时候removeEventListener
- 不要以为
delete domElement.onXXX
就可以移除 DOM 元素的 Event Listener ,要用domElement.onXXX = null
- 不要在 Vue 的 Custom Directive 的 Hook Function 中引用
vnode
(即第三个参数)