vue 双向绑定原理及依赖搜集的过程「建议收藏」

vue 双向绑定原理及依赖搜集的过程「建议收藏」双向数据绑定机制:官方:vue是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发响应的监听回调。第一步:需要observer的数据对象进行递归遍历,包括子属性对象的属性,都加上setter和getter,这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化第二步:compile解析模板令,将模板中的变量替换成数据.然后初始化渲染页面视图,并将每个令对

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

双向数据绑定机制:
官方: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.net/180943.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c++打印倒直角三角形(平行四边形等边三角形)

    标题与思路:①正三角//正三角voidregularTriangle(inta){ cout<<“※正三角\n”; for(inti=0;i<a;i++) { for(intj=a;j>i+1;j–) cout<<“”; for(intj=0;j<i+1;j++) cout<<“*”; cout<<“\n”; }}②倒三

    2022年4月10日
    166
  • Vue和Springboot实现SM4加密和解密(前端可加密,后端可加解密,MD5同理)

    Vue和Springboot实现SM4加密和解密(前端可加密,后端可加解密,MD5同理)Vue和Springboot实现SM4加密和解密(前端可加密,后端可加解密,MD5同理)前言一、前端加密输入的密码前置检测粘贴我的SM4.js代码在组件中调用加密结果二、Springboot后端进行SM4的解密和加密引入库复制我的SM4加解密代码调用方法总结前言网站配置https比较麻烦,所以为了我们的用户账户安全,密码在从前端传输到后端的过程中,最好加密一下,选用SM4有两个原因,一是国产加密算法,二是这个国密算法是对称的,只要加密和解密的key和vi相同,可以很容易的

    2022年9月26日
    2
  • 不动点与递归数列的极限有关吗_递推数列不动点法

    不动点与递归数列的极限有关吗_递推数列不动点法

    不动点与递归数列的极限
    有些收敛的数列才有不动点,比如x=1+x^(-1);x=1+x^(-2);x=1+x^(-3),下面写程序验证: 
    对x=1+x^(-3):
     
    (defunpow(numcount)
    (if(or(>count1)(eq count 1))
        (*num 
         (pownum 
            (-count1)

    2025年10月26日
    2
  • excel 导出json_导出的数据格式不对

    excel 导出json_导出的数据格式不对json格式数据转Excel导出的两种方法第一种table格式数据直接转Excel:但是用这种方式会出现一种问题,就是当你的table有分页的情况下,只能抓取当前分页的数据。拿到表格的id就可以

    2022年8月4日
    22
  • visual studio2019的安装以及使用

    visual studio2019的安装以及使用一 下载安装包下载地址选择 visualstudio 的 community 版本二 下载好后运行三 组件的选择如果是用来学 C C 的话 选择以下两个就够了之后如果还需要其他一些功能的话 可以后续在进行添加 打开 visualstudio 进入修改四 进行安装如果不需要修改安装位置的话点击安装就可以了 不过由于 vs2019 占用的空间较大最好不要装在

    2025年7月4日
    3
  • 无锁编程介绍

    无锁编程介绍原文地址:http://preshing.com/20120612/an-introduction-to-lock-free-programming文章目录无锁编程是什么无锁编程技术原子的Read-Modify-Write操作Compare-And-Swap循环顺序一致性内存保序不同的处理器有不同的内存模型参考文献无锁编程是一项挑战,不仅仅是因为自身的复杂性所致,还与初次探索该课题的困难…

    2022年6月10日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号