返回顶部
首页 > 资讯 > 精选 >vue数据驱动原理的示例分析
  • 208
分享到

vue数据驱动原理的示例分析

2023-06-29 12:06:08 208人浏览 泡泡鱼
摘要

这篇文章给大家分享的是有关Vue数据驱动原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue数据驱动原理是:采用数据劫持结合发布者和订阅者模式,通过“Object.defineProperty()”

这篇文章给大家分享的是有关Vue数据驱动原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

vue数据驱动原理是:采用数据劫持结合发布者和订阅者模式,通过“Object.defineProperty()”来劫持各个属性的setter、getter,在数据变动时发布消息给订阅者,触发相应监听回调。

本文操作环境:windows10系统、Vue2.9.6版,DELL G3电脑。

vue数据驱动原理

什么是数据驱动

数据驱动是vue.js最大的特点。在vue.js中,所谓的数据驱动就是当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom。

比如说我们点击一个button,需要元素的文本进行是和否的切换。在Jquery中,对于页面的修改我们一般是这样的一个流程,我们对button绑定事件,然后获取文案对应的元素dom对象,然后根据切换修改该dom对象的文案值。

那么vuejs是如何实现这种数据驱动的呢?

vue实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应监听回调。

当把一个普通 javascript 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化。

vue的数据双向绑定 将MVVM作为数据绑定的入口,整合Observer,Compile和Watcher三者,通过Observer来监听自己的model的数据变化,通过Compile来解析编译模板指令(vue中是用来解析 {undefined{}}),最终利用watcher搭起observer和Compile之间的通信桥梁,达到数据变化 —>视图更新;视图交互变化(input)—>数据model变更双向绑定效果。

对getter/setter的理解?

当打印出Vue实例下的data对象里的属性,它的每个属性都有两个相对应的get和set方法,顾名思义,get为取值,set为赋值,正常情况下,我们取值和赋值是用obj.prop的方式,但是这样做有一个问题,我如何知道对象的值改变了?所以就轮到set登场了。你可以把get和set理解为function,当我们调用对象的属性时,我们会进入到get.属性(){…}中,先判断对象是否有这个属性,如果没有,那麽就添加一个name属性,并给它赋值;如果有name属性,那就返回name属性。你可以把get看成一个取值的函数,函数的返回值就是它拿到的值。感觉比较重要的是set属性,当给实例赋值:此时,会进入set name(val){…};形参val就是我赋给name属性的值,在这个函数里,就可以做很多事了,比如双向绑定!因为这个值的每次改变都必须经过set,其他方式是改变不了它的,相当于一个万能的监听器。ES5的对象原型有两个新的属性__defineGetter__和__defineSetter__,专门用来给对象绑定get和set。建议使用下面这种方式,因为是在原型上书写,所以可以继承和重用。

感谢各位的阅读!关于“vue数据驱动原理的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: vue数据驱动原理的示例分析

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

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

猜你喜欢
  • vue数据驱动原理的示例分析
    这篇文章给大家分享的是有关vue数据驱动原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue数据驱动原理是:采用数据劫持结合发布者和订阅者模式,通过“Object.defineProperty()”...
    99+
    2023-06-29
  • Vue模拟实现数据驱动的示例分析
    这篇文章主要为大家展示了“Vue模拟实现数据驱动的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue模拟实现数据驱动的示例分析”这篇文章吧。一、前言之...
    99+
    2024-04-02
  • Vue双向数据绑定原理的示例分析
    小编给大家分享一下Vue双向数据绑定原理的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!双向数据绑定的原理:采用“数据劫持”结合“发布者-订阅者”模式的方式,通过“Object.defineProperty()”方...
    99+
    2023-06-14
  • Vue数据驱动表单渲染form表单的示例分析
    小编给大家分享一下Vue数据驱动表单渲染form表单的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!form-creat...
    99+
    2024-04-02
  • vue数据响应式原理中数组的示例分析
    这篇文章主要介绍vue数据响应式原理中数组的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!src/core/observer/index.jssrc/core/observer/array.js arrayM...
    99+
    2023-06-29
  • vue-router实现原理的示例分析
    这篇文章将为大家详细讲解有关vue-router实现原理的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。大致流程可以看成这样:浏览器发出请求服务器监听到80端口(...
    99+
    2024-04-02
  • VueJS中数据驱动和依赖追踪的示例分析
    这篇文章主要介绍了VueJS中数据驱动和依赖追踪的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在之前实现一个自己的Mvvm中,用 ...
    99+
    2024-04-02
  • vue循环列表动态数据的示例分析
    这篇文章将为大家详细讲解有关vue循环列表动态数据的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。调用方法:Vue.set( target, key, value...
    99+
    2024-04-02
  • vue-next响应式原理的示例分析
    这篇文章给大家分享的是有关vue-next响应式原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。预备知识无论是阅读这篇文章,还是阅读 vue-next 响应式模块的源...
    99+
    2024-04-02
  • Vue中响应式原理的示例分析
    这篇文章主要介绍了Vue中响应式原理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Vue 嘴显著的特性之一便是响应式系统(reac...
    99+
    2024-04-02
  • Vue响应式原理及双向数据绑定示例分析
    目录前言响应式原理双向数据绑定前言 之前公司招人,面试了一些的前端同学,因为公司使用的前端技术是Vue,所以免不了问到其响应式原理和Vue的双向数据绑定。但是这边面试到的80%的同学...
    99+
    2024-04-02
  • mysql.data.dll驱动各版本的示例分析
    这篇文章主要介绍mysql.data.dll驱动各版本的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!此处为mysql驱动mysql.data.dll注意:此处X86版本较多...
    99+
    2024-04-02
  • SpringBoot自动配置原理的示例分析
    这篇文章主要介绍了SpringBoot自动配置原理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、SpringBoot是什么SpringBoot 的诞生就是为了简...
    99+
    2023-06-22
  • springBoot自动注入原理的示例分析
    这篇文章给大家分享的是有关springBoot自动注入原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。@SpringBootApplication注解解读为什么我们的启动类上标注一个@SpringBo...
    99+
    2023-06-29
  • vue移动UI框架滑动加载数据的示例分析
    小编给大家分享一下vue移动UI框架滑动加载数据的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果展示先上一个gif图...
    99+
    2024-04-02
  • vue中事件机制原理的示例分析
    这篇文章主要介绍了vue中事件机制原理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。常见的事件机制demo都会包含在这段代码中:&...
    99+
    2024-04-02
  • Vue中数据绑定的示例分析
    这篇文章主要为大家展示了“Vue中数据绑定的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue中数据绑定的示例分析”这篇文章吧。为什么绑定简单的数据渲...
    99+
    2024-04-02
  • jsonp原理的示例分析
    小编给大家分享一下jsonp原理的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一:跨域问题。二,跨域产生的原因Js是不...
    99+
    2024-04-02
  • AJAX原理的示例分析
    这篇文章将为大家详细讲解有关AJAX原理的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先上原理图: 背景:   &nbs...
    99+
    2024-04-02
  • Python接口自动化浅析数据驱动原理
    目录一、openpyxl模块openpyxl模块介绍openpyxl安装openpyxl简单使用二、Excel用例管理三、ddt介绍及使用ddt介绍ddt使用ddt:data:unp...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作