vue 双向绑定原理及依赖搜集的过程「建议收藏」
双向数据绑定机制: 官方:vue是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发响应的监听回调。 第一步: 需要observer的数据对象进行递归遍历,包括子属性对象的属性,都加上setter和getter,这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化 第二步: compile解析模板令,将模板中的变量替换成数据.然后初始化渲染页面视图,并将每个令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图 第三步: Watcher订阅名是 observer和 Compile之间通信的桥梁,主要做的事情是: 1.在自身实例化时往属性订倒器(dep)里面添加自己 2.自身必须有一个 update()方法 3.待属性变动dep.notice()通知时,能调用自身的update()方法,并触发Compile中定的回调,则功成身退 第四步: MVVM作为数据绑定的入口,合 observer、 Compile和 Watcher三者,通过 Observer来监听自己的model数据変化,通过 Compile来解析编译模板指令,最终利用 Watcher搭起 Observer和 Compile之间的通信标梁,达到数据变化->视图更新新:视图交互变化(Input)->数据mode变更的双向绑定效果。 自己理解: 1单项绑定过程(自己总结的):变量变了,由set发通知给watcher,watcher告知虚拟DOM树,叫它该比较了,我这有值变了,于是生成新的dom树进行一个比较,然后逐级分类比较,比较出哪个元素发生变化就把这个元素更新到页面,这就是单项数据绑定原理。
2. v-model原理其实就是给input事件绑定oninput事件 就会立刻调用底层对象对应的setter方法 改变data里的属性的值 从而实现双向数据绑定
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/180943.html原文链接:https://javaforall.cn
相关文章
- 尚硅谷Vue课程P30-P35笔记(后台回复 vue 可获得更多笔记!)
- 一篇文章,Vue快速入门!!!
- 基于VUE + Echarts 实现可视化数据大屏展示效果[通俗易懂]
- Vue框架控制台Console提示Download the Vue Devtools extension....
- Vue自定义指令
- Vue上传文件操作(没有CV,认真看)
- 面试题vue双向绑定原理_vue路由面试题
- 如何修复vue-cli保存编译时的eslint报错
- vue-cli 初始----安装运行Vue项目
- vue子组件向父组件传值的三种方式_vue父页面传值到子页面
- 基于vue的ui框架哪个最简单_vue配什么ui框架比较好
- Vue响应式依赖收集原理分析-vue高级必备
- vue封装jquery修改自身以及兄弟元素的方法「建议收藏」
- 在网页文档中引入Vue.js的方法有哪些?_vue直接引入js文件没有用
- VUE组件封装_vue使用组件
- 请说下封装 vue 组件的过程?_组件二次封装的必要性
- Vue生成二维码_vue通过二维码分享
- vue 调用子组件方法失败_Vue子组件调用父组件的方法及常见问题「建议收藏」
- vue之插值表达式
- Vue和vue全家桶有什么区别_Vue和vue全家桶有什么区别
- VUE系列 --- 网络模块axios(三)
- Vue使用Axios携带token请求后端接口
- IntelliJ IDEA使用 vue-cli 创建Vue项目
- vue源码分析-从new Vue开始_2023-02-24
- 使用Vue技术从MSSQL中获取数据(vue获取mssql数据)
- 优雅的Vue请求Redis驱动的高性能服务(vue请求redis)
- 基于Vue的Redis网页设计(vue设计redis页面)
- 使用Vue从Redis获取数据(vue去redis取数据)
- Oracle Vue网站助力网站创新,让你的网站飞起来(oracle vue网站)