当前位置:首页 > 网站源码 > 正文内容

vue的响应式原理和数据绑定(如何理解vue数据双向绑定原理)

网站源码2年前 (2023-01-21)877

本篇文章给大家谈谈vue的响应式原理和数据绑定,以及如何理解vue数据双向绑定原理对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

vue数据双向绑定的原理+响应式原理

双向绑定:

数据变化更新视图 view = model 利用Object.defineProperty的get、set函数对数据更改、读取进行监听。如果数据改变就通知watcher进行重新渲染页面

视图变化更新数据 model = view 利用事件监听,通过target.value拿到新值赋值给data

数据变化更新视图关键在于 如何知道数据发生了变化,数据变化了通知视图进行更新

让数据变得能监测,需要使用Object.defineProperty中的get、set函数

let car = {}

let val = 3000

Object.defineProperty(car, 'price', {

get(){

console.log('price属性被读取了')

return val

},

set(newVal){

console.log('price属性被修改了')

val = newVal

}

})

car.price = 4000 设置属性值会进入set方法

console.log(car.price) 读取属性值会进入get方法

Object.defineProperty通过对数据读取和设置进入的get、set函数对数据进行了监听

响应式原理:

每个组件实例都对应一个 watcher 实例,它会在组件渲染的过程中把“接触”过的数据 property 记录为依赖。之后当依赖项的 setter 触发时,会通知 watcher,从而使它关联的组件重新渲染。

思考:

get函数好像意义不大

发布者、订阅者不能很好理解

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的响应式原理和数据绑定的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于如何理解vue数据双向绑定原理、vue的响应式原理和数据绑定的信息别忘了在本站进行查找喔。

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

版权声明:本文由我的模板布,如需转载请注明出处。


本文链接:http://60200875.com/post/1557.html

分享给朋友:

“vue的响应式原理和数据绑定(如何理解vue数据双向绑定原理)” 的相关文章

90平米三室一厅装修设计(90平米三室一厅装修设计效果图)

90平米三室一厅装修设计(90平米三室一厅装修设计效果图)

本篇文章给大家谈谈90平米三室一厅装修设计,以及90平米三室一厅装修设计效果图对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、90平的房子3室2厅会不会显得太挤?怎样的格局...

新人直播游戏去哪个平台好一些(新人游戏直播哪个平台比较好)

新人直播游戏去哪个平台好一些(新人游戏直播哪个平台比较好)

今天给各位分享新人直播游戏去哪个平台好一些的知识,其中也会对新人游戏直播哪个平台比较好进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、游戏直播哪个平台比较好...

umyth数字藏品平台交流群(鲸探数字藏品NFT交流群)

umyth数字藏品平台交流群(鲸探数字藏品NFT交流群)

今天给各位分享umyth数字藏品平台交流群的知识,其中也会对鲸探数字藏品NFT交流群进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、“炒图”可日入过万,年轻人...

正规的担保交易平台有哪些(正规的担保交易平台有哪些公司)

正规的担保交易平台有哪些(正规的担保交易平台有哪些公司)

今天给各位分享正规的担保交易平台有哪些的知识,其中也会对正规的担保交易平台有哪些公司进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、第三方交易担保类的平台...

明日斗地主2021最新版(明日斗地主2019版)

明日斗地主2021最新版(明日斗地主2019版)

今天给各位分享明日斗地主2021最新版的知识,其中也会对明日斗地主2019版进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、明日斗地主为什么加载到百分之九十就...

卖游戏号的平台哪个比较好(卖游戏号的平台哪个比较好做)

卖游戏号的平台哪个比较好(卖游戏号的平台哪个比较好做)

今天给各位分享卖游戏号的平台哪个比较好的知识,其中也会对卖游戏号的平台哪个比较好做进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、卖游戏账号哪个平台好 2...