什么是vue?如何理解双向数据绑定?Vue2.0和Vue3.0实现双向绑定的区别

本文介绍了Vue.js,一个轻量级的JavaScript框架,以其渐进式开发和组件化特性著称。重点讲解了MVVM模式,解释了数据双向绑定的概念,并对比了Vue2.0与3.0中实现双向绑定的不同,Vue2.0依赖Object.defineProperty(),而Vue3.0引入了更强大的Proxy对象以提高性能。
摘要由CSDN通过智能技术生成

1.何为Vue?

  • Vue是一套用于构建单页面应用的JavaScript框架,它的核心采用MVVM框架进行搭建,自底向下增量开发,主要的特点就是实现了数据的双向绑定,通过渐进式的开发模式减小项目包体积,采用模块化开发的思想,提高开发效率,最主要的一点是Vue的学习成本很低,可以说是0基础就可以根据官网文档上手。
  • Vue主要的有点还是在于它的组件化开开发,可以提高代码的复用性,

2.何为MVVM模式

  • 大家数值的开发模式,可能通过最多的是MVC开发模式,当然还有更多的MVP模式,发布订阅者模式等等,那么Vue为什么要采用MVVM的开发模式,其实主要还是因为MVVM模式可以实现数据的双向绑定,它是如何实现的?
  • MVVM可以分为,模型层,视图层,视图模型层,模型层主要干的事情就是负责与业务数据相关的操作,就像我们data函数中返回的数据一样,主要负责数据方面的工作,view层顾名思义就是主要负责视图相对应的操作,神秘的vm层也就是视图模型层主要是干什么的?视图模型层就类似一座桥梁,链接模型(数据层)和视图层,它的工作是双向的一边监听数据一边观测试图,无论是数据层发生变化还是视图层发生变化,他都会同步给对方,让视图层和数据层保持一致。实现数据的双向绑定。

3.双向绑定

  • 何为双向数据绑定,双向数据绑定就是当你页面的数据发生变化之后,会同步到你的数据中,当你渲染页面的数据发生变化的时候会及时更新到页面。

4.Vue2.0和3.0的实现区别

  • Vue2.0中使用Object.defineProperty()实现数据的双向绑定,单层字面意义上理解,是采用了一个对象的方法,那么它就一定会存在缺点,最大的缺点就是不能实时的检测数组发发生的变化,每次检测数据的变化都需要通过,递归,遍历对象的所有属性来获取发生的地方,这样的话对性能以及效率可能会存在一些小小的影响。
  • Vue3.0中最主要的改变就是将Object.defineProperty()替换成为Proxy,Proxy是 ES6 中新增的一个特性,翻译过来意思是"代理",用在这里表示由它来“代理”某些操作。 Proxy 让我们能够以简洁易懂的方式控制外部对对象的访问。其功能非常类似于设计模式中的代理模式。
  • 创建一个代理
    let p = new Proxy(target, handler);
    target: 是用Proxy包装的被代理对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。
    handler: 是一个对象,其声明了代理target 的一些操作,其属性是当执行一个操作时定义代理的行为的函数。
    p是Proxy对象,当其他操作对p进行更改的时候,会执行handler对象的方法。Proxy有13种数据劫持的操作,常用的handler处理方法:
    get: 读取值,
    set: 获取值,
    has: 判断对象是否拥有该属性,
    construct: 构造函数
observe(data) {
  const that = this;
  let handler = {
   get(target, property) {
      return target[property];
    },
    set(target, key, value) {
      let res = Reflect.set(target, key, value);
      that.subscribe[key].map(item => {
        item.update();
      });
      return res;
    }
  }
  this.$data = new Proxy(data, handler);
}
```这段代码里把代理器返回的对象代理到this.$data,即this.$data是代理后的对象,外部每次对this.$data进行操作时,实际上执行的是这段代码里handler对象上的方法。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值