• vue3双向绑定原理(对比vue2)


    vue3的数据双向绑定与vue2的区别

    通俗的讲vue3优势:
    vue3 性能 提升了1.3 ~ 2倍SSR性能提升了2 ~ 3倍

    为什么快呢?

    其中一点取决于 “数据双向绑定” 的优化 =>

    vue3vue2
    原理proxy (代理对象) + Reflect (反射)Object.defineProperty
    用法通过ref和reactive,自动转换在data函数注册
    优缺点1.proxy对象监听整个对象,属性变化就能监听
    不须要遍历对象的每个属性                        

    2.vue3 互取最优引用数据类型采用proxy,      
    基本数据类型用Object.defineProperty,       
    1. Object.defineProperty方法只监听 一个属性 ,所以对于
    引用数据类型,需要通过遍历对象每个属性进行监听

    2.不能监听数组的变化(修改原数组的方法,set无法监听)
    vue2.0是通过标记这些方法 重构的形式实现(数组劫持)  

    详情

    vue2 数据双向绑定 =>实现过程:

    => 监听一个属性 
    
    var obj = { _a:123} //必须要临时变量    监听一个属性
    Object.defineProperty(obj, "a", {
      get() { return obj._a; },  通过b遍历_b ,通过  b返回_b
      set(val) {obj._a = val; },
    });
    
    = > 所以必须需要遍历对象的每个属性创建一个Object.defineProperty 消耗资源较大
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    vue3 数据双向绑定 =>实现过程:

    = > 监听整个对象
    
    const   proxy1  =  new Proxy( { a:1  },{
    get  :  function(obj,key,receiver){    
    		    return Reflect.get(obj, key,receiver) 
    		},   
    set  :  function(obj,key,value,receiver){ 
                return Reflect.set(obj, key, value, receiver) 
           }
    })
    
    = > Reflect和Object类似Object上的一下方法同样也部署在Reflect上,未来的新方法只部署在Reflect ,不在Object上。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

  • 相关阅读:
    极智AI | 昇腾开发环境搭建 CANN & MindStudio (无坑版)
    推荐一些小而美的互联网公司
    leetcode做题笔记164. 最大间距
    Android 12.0 mt6771新增分区功能实现二
    将Java项目Jar包制作成Docker镜像
    [附源码]java毕业设计小型医院药品及门诊管理
    ChatGPT使用技巧整理
    【YOLO】YOLO简介
    力扣大厂热门面试算法题 - 矩阵
    Open那啥的搭建文档
  • 原文地址:https://blog.csdn.net/weixin_42232622/article/details/125471100