VUE数据双向绑定

本文探讨了Vue的响应式原理,当Vue实例创建时,数据会被转化为getter/setter以追踪依赖。详细解释了如何监控对象属性变化,包括watch、computed的区别。讨论了在Vue中动态添加属性可能导致的问题及解决方案,如使用$set()。同时对比了delete与Vue.delete的差异,并提供了提高SPA首页加载速度的策略,如懒加载和减少HTTP请求。最后,列举了前端优化网站性能的多种方法,如控制资源加载优先级和利用浏览器缓存。
摘要由CSDN通过智能技术生成

1、Vue响应式原理

当一个Vue实例创建时,vue会遍历data选项的属性,用Object.defineProperty将它们转为getter/setter并且在内部追踪相关依赖,在属性被访问和修改时通知变化。

每个组件实例都有相应的watcher程序实例,它会在组件渲染的过程中把属性记录为依赖,之后当依赖项的setter被调用时,会通知watcher重新计算,从而致使它关联的组件得以更新。

2、Vue监控对象属性变化的几种方式

例如要监控obj.name的变化

watch:{
    obj:{
        handler(newVal,oldVal){
            console.log('obj changed')
        },
        deep:true;
    },
}
这里是监控的整个obj对象

另外一种

watch:{
    'obj.name':{
        handler(newVal,oldVal){
            console.log('obj.name changed')
        }
    }
}
这里仅仅监控的是obj对象的name属性

还可以使用computed计算属性实现监控的效果

computed:{
    A(){
        return this.obj.name
    }
}

这里当依赖改变时会重新计算得到一个值返回

这里会想到watch与computer区别是:

        watch:不支持缓存;支持异步;一多对形式;

        computer:支持缓存;不支持异步(内有异步操

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值