当前位置:首页 > 软件开放 > 正文内容

vue响应式数据原理(vuejs响应式基本原理)

软件开放2年前 (2023-04-15)2456

今天给各位分享vue响应式数据原理的知识,其中也会对vuejs响应式基本原理进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

vue2数据响应式原理

vue2响应式原理由 Observer 类, Dep 类和 Watcher 类互相调用实现, Observer 类是把一个普通的object类变成每一层都能相应的类, Dep 类的作用是添加,移除,通知和收集订阅者, Watcher 类是订阅者,主要功能是把当数据改变的时候,去调用回调函数,修改dom节点

那么是怎么实现响应式的呢,首先是一个函返源数,要先转换为可响应的,那就需要用到 Observer 类

这个 observe 函数就是对 Observer 类做多了一层封装

而 Observer 类是通过 Object.defineProperty 来监控数据的获取和改变的

关键在于 defineReactive 方法,这个方法是对 Object.defineProperty 做了一层封装,并且对对象的每一层做递归调用,实现了每一层都有响应监控

但是漏裤态是怎么知道现在要保存哪一个 Watcher 实例到订阅者数组里面的呢?其实就是用了这个 Dep.target , Dep.target 相当于 window.target ,全局只有一个,全局也能访问

首先得先讲一讲 Watcher 类,我们先回到上面的index.js,对象要让 Watcher 类进行监听,而 Watcher 有3个参数,第一个是监听的对象,第二个是监听的属性,比如 a.b.c.d ,第三个是属性改变后触发的回调函数

先来讲一下 parsePath ,这个在工具类里纯悔,作用是访问 a.b.c.d 这种链式属性

首先是触发了 Watcher 的 get() 方法,把当前实例保存在了 Dep.target 里面

然后在调用 parsePath 获取属性值的过程中,会挨个访问响应对象的属性,就会触发相应的 getter ,我们回到 defineReactive.js ,可以发现这时候相应属性的 getter 就会把 Dep.target 也就是相应的 Watcher 的实例保存在了 Dep 类的订阅者数组里面

最后,在改变属性的时候,相应属性的 setter 就会通知之前已经保存的订阅者数组,遍历触发回调

vue响应式原理是什么?

当一个vue实例加载时,会进行初始化,将他的配置项options和mixins的内容合并,以options为主,而在初始化data时,会对data对象进行数据劫持,并做代理,通过Object。

definproperty劫持数据后vue会查找当前属性有无依赖项既被watch,或者依赖当前属性的值,如果有,就会注册依赖既deps,而注册deps时会在wather内添加新的更新目标。

当数据发生变更时,会触发deps的更新方法,调用所有的watcher,watcher又会触发对应deps的更新,直到所有依赖项更新完毕。

扩展资料:

Vue 是一个 MVVM框架,核心是双向数据绑定,VM(视图模型)是作为V(视图)和M(模型)的桥梁。对Vue响应式(双向数据绑定)的理解,如果错误尽请指出,一起交流,共同进步。Vue响应式原理核心是 数据劫持,采用春核空 ES5 的 object.defineproperty 的 getter 和 setter 方法。

Vue.js 最显著的一个功能是响应系统 —— 模型只是普通对象,修改它则更新视图。这让状态管理非常简单且直观,不过理解它的原理也很重要,可以避免一些常见问题。下面我们开始深扒瞎挖 Vue.js 响应系统的底层细节。

参考资料来氏橡源:百度百科-Vue·js前端开发技术

vue响应式原理是什么?

vue响应式基本原理是基于Object.defineProperty(obj,prop,descriptor),descriptor里面可以定义get和set方法,可以在获取属性值事触发get方法(可以收集依赖),设置属性值时触发set方法(更新依赖)。Vue最独特的特性之一,是其非侵轿搏入性的响应式系统。数据模型仅仅是普通的JavaScript对象。而当你修改它们时,视图会进行更新。

vue响应激铅式系统

vue作为一个前端框架,近两年非常的火,虽然它的社区不像react那样繁荣,但它配套的东西都有固定的团队维护,用起来更方便。它是MVVM模型的框架(不熟悉框架模型的同学可以看看阮一峰大神的博客,或者点这里),实现数据的双向绑定,与其他框架相比vue非常的轻量级,另一个重要的特点就是它的闭铅祥响应式系统。

能说说vue的响应式原理吗?

Vue 是一个 MVVM 框架,核心是双向数据绑定,VM(视图模型)是作为 V(视图) 和 M(模型)的桥梁。下面是对 Vue 响应式(双向数据绑定)的理解,如果错误尽请指出,一起交流,共同进步。

Vue响应式原理核心是 数据劫持,采用 ES5 的 object.defineproperty 的 getter 和 setter 方法。从一个例子出发:

首先,在Vue初始化阶段,通过 observer 对 data 中的属性进行递归的劫持,包括 name、job_ undergo、a、b等

在 get阶段也就是初始化视图时,为每一个劫持的属性分配一个 依赖收集器,主要收集当前属性的观察者对象,例子中 name 属性在模板中有两处被使用,那么 name 属性的依赖收集器中就碰祥存放两个观察者对象

当点击按钮时,将 name 修改为 lisi 时,会触发 observer 的 setter 函数,将 value 更新为 lisi 最新值,然后通知依赖收集器州吵简数据发生了更新。

依赖收集就是发布订阅模式,依赖收集器会册裤通知所有的观察者对象,当前name 属性有两个观察者对象。

观察者对象调用对应的回调函数进行相关的处理和DOM更新

以上是纯响应式原理的分析和总结,下面配一张流程图:

vue响应式数据原理的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vuejs响应式基本原理、vue响应式数据原理的信息别忘了在本站进行查找喔。

扫描二维码推送至手机访问。

版权声明:本文由飞速云SEO网络优化推广发布,如需转载请注明出处。

本文链接:http://bjqlhc.com/post/16909.html

分享给朋友:

“vue响应式数据原理(vuejs响应式基本原理)” 的相关文章

成都软件开发(成都软件开发公司排名)

成都软件开发(成都软件开发公司排名)

本篇文章给大家谈谈成都软件开发,以及成都软件开发公司排名对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、成都软件开发有哪些公司 2、成都教育系统软件开发公司? 3、成都有没有软件开发做得好的公司? 4、成都哪个软件开发培训学校好?要能学到东西的,不包就业也没问...

系统软件开发(区块链系统软件开发)

系统软件开发(区块链系统软件开发)

今天给各位分享系统软件开发的知识,其中也会对区块链系统软件开发进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、系统软件开发公司有哪些 2、软件开发包括哪些东西? 3、软件开发和系统开发有什么区别? 4、软件开发工作具体干什么? 系统软件开发公司...

第三方交易平台有哪些主要责任和义务(关于第三方交易平台的管理规定)

第三方交易平台有哪些主要责任和义务(关于第三方交易平台的管理规定)

本篇文章给大家谈谈第三方交易平台有哪些主要责任和义务,以及关于第三方交易平台的管理规定对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、第三方在线支付平台有哪些 2、第三方责任有哪些 3、第三方支付平台的主要业务分别是做什么的? 4、目前我国的第三方支付平台有哪...

米哈游游戏交易平台(米哈游官网账号交易)

米哈游游戏交易平台(米哈游官网账号交易)

今天给各位分享米哈游游戏交易平台的知识,其中也会对米哈游官网账号交易进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、交易猫米哈游换绑码是什么 2、米哈游有没有账号交易平台 3、原神号在哪才能买到? 4、米哈游有官方交易平台吗 5、米哈游实名认...

东北网红小橙子爸爸封号了吗(东北网红小橙子爸爸封号了吗知乎)

东北网红小橙子爸爸封号了吗(东北网红小橙子爸爸封号了吗知乎)

今天给各位分享东北网红小橙子爸爸封号了吗的知识,其中也会对东北网红小橙子爸爸封号了吗知乎进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、小橙子是干什么的? 2、哈尔滨小橙子先生的爸爸是做什么工作的? 3、小橙子爸爸怎么死的 4、2岁小橙子爸爸是干...

es文件浏览器怎么看电脑视频(手机es文件浏览器怎么看视频)

es文件浏览器怎么看电脑视频(手机es文件浏览器怎么看视频)

本篇文章给大家谈谈es文件浏览器怎么看电脑视频,以及手机es文件浏览器怎么看视频对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、es文件浏览器 如何连续播放局域网视频? 2、如何在es文件浏览器打开人人视频 3、如何用ES文件浏览器 看电脑里面的文件 4、es...