在处理较大的项目时,选择使用React而不是vue。Vue在较大的项目中容易出现内存泄漏的原因有哪些?
Property()
如果数据中加载了非常复杂的方法或者数据,Property()有很多属性需要监控,还有loopwhenpage等操作;跳转时,组件将被销毁,但vue实例不会被销毁。data数据挂在vue实例中,vue实例会被挂载
(在vue中维护依赖)<.br/>watcher(v-html,v-if)==>用于连接视图层和响应数据层
MVVM:M(数据)、V(视图)、VM(LinkWatcher)
每个指令都有一个watcher,每个watcher对应的元素都有一个ID。
多个ID维护在一个数组中如果项目中有多个v-if,v-if激活后,该命令消失当数据量很大时,消失命令对应的id可能无法确定,或者数组为空,或者计数组坏掉。
导致内存泄漏
Property()否监听数组的变化
Property()只能检测对象开头的数据所拥有的key
肯定不会触发数组推送(因为数据是后面插入的)
数组移位可以激活
pop或者shift可以激活
3。保留简约原则
import{dep}from"../utils/index"----dep:这是封装的Property()方法
constarrayProto=ype----原始对象数组构造函数模板
constarrayMethods=(arrayProto)--新对象继承数组原型对象
传入的原始方法需要重写,扩展上述方法原始基类然后使用observable重新渲染作为响应数据
(实现类继承)
上一篇:vue内存泄漏检测工具
下一篇:vue启动内存溢出