返回顶部
首页 > 资讯 > 精选 >Vue如何实现数据驱动
  • 404
分享到

Vue如何实现数据驱动

2023-07-04 12:07:12 404人浏览 独家记忆
摘要

这篇文章主要介绍“Vue如何实现数据驱动”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue如何实现数据驱动”文章能帮助大家解决问题。一、前言之前实现了为每个对象扩展一个$set方法,用于新增属性使

这篇文章主要介绍“Vue如何实现数据驱动”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue如何实现数据驱动”文章能帮助大家解决问题。

一、前言

之前实现了为每个对象扩展一个$set方法,用于新增属性使用,这样就可以监听新增的属性了。

当然,数组也是对象,也可以通过$set方法实现新增属性。

但是,对于数组而言,通常我们是通过push之类的方法吧。

PS:Vue中明确指出push、pop、shift、unshift、splice、sort、reverse方法为变异方法,可以通过它们监听属性变化

注:我们将Array变异方法实现,也写在extendObj.js中的,因为数组也是对象嘛。

二、Array变异方法实现

要实现这些变异方法,毫无疑问,我们会重写它们,那在Array.prototype里面重写吗?

当然不是,这样不就影响了所有数组对象的原型链了么!

为了避免这种情况,且,我们只是想在监听数据对象上继承这些变异数组方法,那么细心的你会发现,其实与我们在"模拟Vue之数据驱动3"中实现$set方法类似了。

首先,我们创建arrKeys对象用于保存需要变异的数组方法以及恒定对象extendArr,如下:

let arrKeys = ['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'];const extendArr = [];

接着,就是在extendArr对象上,一一监听arrKeys中的方法了,与$set方法类似,整体结构如下:

!function(){  arrKeys.forEach(function(key){    proxyObject(extendArr, key, function(){      //TODO    });  });}();

注:proxyObject方法其实核心就是Object.defineProperty,详见"模拟Vue之数据驱动3".

接下来,就是实现核心部分代码了,重写这些方法的目的,是为了监听数据变化,所以要在方法原有功能不变的情况下,重写它们,Array.xxx.apply即可实现原有功能。

且,push、unshift、splice这三个方法可以在原数组中,新增属性,故而,我们需要监听新增属性以及它们的属性值,这里就和$set方法完全一样了,通过$Observer,即可利用observe以及convert方法实现了。

实现代码如下:

!function(){  arrKeys.forEach(function(key){    proxyObject(extendArr, key, function(){      console.log('Fun ' + key + ' is observed');      let result;      let arrProto = Array.prototype;      let ob = this.$Observer;      let arr = arrProto.slice.call(arguments);      let inserted;      let index;      switch(key){        case 'push': {          inserted = arr;          index = this.length;          break;        }        case 'unshift': {          inserted = arr;          index = 0;          break;        }        case 'splice': {          inserted = arr.slice(2);          index = arr[0];          break;        }      }      result = arrProto[key].apply(this, arguments);      if(inserted){        inserted.forEach(val => {          ob.observe(val);          ob.convert(index++, val);        });      }      return result;    });  });}();

最后,就是在需要监听的对象上继承这些变异方法咯,如下:

//observer.jsfunction Observer(data){  if(!(this instanceof Observer)){    return new Observer(data);  }  data.__proto__ = extendObj;  //继承变异方法push、pop等等  if(Array.isArray(data)){    data.__proto__.__proto__ = extendArr;  }  this.data = data;  this.walk(data);  }

好了,一切完毕,接下来就测试下呗:

<script src="./extendObj.js"></script><script src="./observer.js"></script><script>  'use strict';  let data = {    msg: [5, 2, 0],    user: {      name: 'Monkey',      age: 24    },    lover: {      name: 'Dorie',      age: 23    }  };  Observer(data);</script>

效果如下:

Vue如何实现数据驱动

vue是什么

Vue是一套用于构建用户界面的渐进式javascript框架,Vue与其它大型框架的区别是,使用Vue可以自底向上逐层应用,其核心库只关注视图层,方便与第三方库和项目整合,且使用Vue可以采用单文件组件和Vue生态系统支持的库开发复杂的单页应用。

关于“Vue如何实现数据驱动”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Vue如何实现数据驱动

本文链接: https://lsjlt.com/news/345300.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Vue如何实现数据驱动
    这篇文章主要介绍“Vue如何实现数据驱动”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue如何实现数据驱动”文章能帮助大家解决问题。一、前言之前实现了为每个对象扩展一个$set方法,用于新增属性使...
    99+
    2023-07-04
  • Python Unittest ddt数据驱动如何实现
    1、数据驱动介绍:@ddt.ddt(类装饰器,申明当前类使用ddt框架)@ddt.data(函数装饰器,用于给测试用例传递数据),支持传python所有数据类型:数字(int,long,float,compix),字符串,列表1ist,元组...
    99+
    2023-05-16
    Python unittest ddt
  • PythonUnittestddt数据驱动的实现
    1、数据驱动介绍: @ddt.ddt(类装饰器,申明当前类使用ddt框架)@ddt.data(函数装饰器,用于给测试用例传递数据),支持传python所有数据类型:数字(int,lo...
    99+
    2023-02-27
    Python Unittest ddt数据驱动 Python Unittest ddt
  • Vue模拟实现数据驱动的示例分析
    这篇文章主要为大家展示了“Vue模拟实现数据驱动的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue模拟实现数据驱动的示例分析”这篇文章吧。一、前言之...
    99+
    2024-04-02
  • 利用Java如何实现动态加载数据库驱动
    利用Java如何实现动态加载数据库驱动?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。代码实现在此只例出核心代码,就是动态加载数据库驱动的类,只是此处暂时没有考虑到数据库连接池的...
    99+
    2023-05-31
    java 动态加载 驱动
  • 如何理解vuejs数据驱动
    本篇文章为大家展示了如何理解vuejs数据驱动,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在vuejs中,数据驱动是指当数据发生变化的时候,用户界面发生相应的变化...
    99+
    2024-04-02
  • idea如何添加数据库驱动
    要添加数据库驱动,你可以按照以下步骤进行操作:1. 下载数据库驱动:首先,你需要从数据库供应商的官方网站或其他可靠来源下载数据库驱动...
    99+
    2023-09-01
    idea 数据库
  • Vue数据代理如何实现
    这篇文章主要介绍“Vue数据代理如何实现”,在日常操作中,相信很多人在Vue数据代理如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue数据代理如何实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-07-04
  • Python Selenium 之数据驱动测试的实现!
    数据驱动模式的测试好处相比普通模式的测试就显而易见了吧!使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据。可以将测试脚本与测试数据分离,使得测试脚本在不...
    99+
    2023-10-27
    python selenium 测试工具 postman 自动化测试 软件测试 测试工程师
  • vue数据驱动原理的示例分析
    这篇文章给大家分享的是有关vue数据驱动原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue数据驱动原理是:采用数据劫持结合发布者和订阅者模式,通过“Object.defineProperty()”...
    99+
    2023-06-29
  • Python如何实现驱动AI机器人
    这篇文章给大家分享的是有关Python如何实现驱动AI机器人的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.如果尚未启动WSL-ROS环境,请运行Windows“开始”菜单中的WSL-ROS快捷方式。这将打开一...
    99+
    2023-06-29
  • 测试驱动技术系列之怎么用pytest实现测试数据驱动
    本篇内容主要讲解“测试驱动技术系列之怎么用pytest实现测试数据驱动”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“测试驱动技术系列之怎么用pytest实现测试数据驱动”吧!一组参数化数据定义参...
    99+
    2023-06-15
  • vue如何实现表单数据验证
    这篇文章主要讲解了“vue如何实现表单数据验证”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue如何实现表单数据验证”吧!为el-form表单添加:rul...
    99+
    2024-04-02
  • Vue如何实现分批加载数据
    目录分批加载数据滚动加载数据分批加载数据 最近在写vue的项目,因为后台返回的数据量太大,在调用了高德地图渲染"polygon"覆盖物的时候处理不过来,直接蹦掉了...
    99+
    2024-04-02
  • vue如何实现数据双向绑定
    Vue.js是一个流行的前端框架,它提供了多种方式来实现数据双向绑定。数据双向绑定是Vue.js最重要的特性之一,它使得开发者能够根据数据的变化自动更新视图,同时也能根据视图的变化自动更新数据。因此,Vue.js的数据双向绑定也成为前端面试...
    99+
    2023-05-14
  • mongodb如何实现动态数据源
    在MongoDB中实现动态数据源可以通过使用多个MongoDB连接对象来实现。下面是一个示例代码:```pythonfrom pym...
    99+
    2023-08-23
    mongodb
  • Angular2如何实现模板驱动的表单
    这篇文章给大家分享的是有关Angular2如何实现模板驱动的表单的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在网页开发中,表单估计是最常用的一个,同时也是最麻烦、最容易出问题的...
    99+
    2024-04-02
  • golang函数的测试驱动开发流程如何实现?
    tdd 流程有助于确保 go 函数的正确性和行为文档。步骤:1) 编写使用 go test 命令的测试,定义函数和测试用例。2) 编写满足测试用例行为的函数代码。3) 运行 go tes...
    99+
    2024-04-29
    golang 测试驱动开发 质数
  • 如何使用ECharts和php接口实现统计图的数据驱动更新
    如何使用 ECharts 和 PHP 接口实现统计图的数据驱动更新导言:在数据可视化的开发中,ECharts 是一款非常强大的前端图表库,而 PHP 则是一种广泛应用于后端开发的编程语言。结合这两者,我们可以轻松实现统计图的数据驱动更新。本...
    99+
    2023-12-18
    echarts PHP接口 统计图 数据驱动更新
  • mongodb如何使用c#驱动数据插入demo
    这篇文章主要介绍mongodb如何使用c#驱动数据插入demo,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Mongodb提供了多种开发语言的驱动,java,python,c++,c...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作