vue双向绑定原理 面试_vue首屏加载优化

vue双向绑定原理 面试_vue首屏加载优化vue.js采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。数据的双向绑定,首先要对数据进行劫持监听,所以我们需要设置一个监听器Observer,用来监听所有属性。如果属性发上变化了,就需要告诉订阅者Watcher看是否需要更新。因为订阅者是有很多个,所以我…

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

Jetbrains全系列IDE稳定放心使用

vue.js采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的settergetter,在数据变动时发布消息给订阅者,触发相应的监听回调。

数据的双向绑定,首先要对数据进行劫持监听,所以我们需要设置一个监听器Observer,用来监听所有属性。如果属性发上变化了,就需要告诉订阅者Watcher看是否需要更新。因为订阅者是有很多个,所以我们需要有一个消息订阅器Dep来专门收集这些订阅者,然后在监听器Observer和订阅者Watcher之间进行统一管理的。接着,我们还需要有一个指令解析器Compile,对每个节点元素进行扫描和解析,将相关指令对应初始化成一个订阅者Watcher,并替换模板数据或者绑定相应的函数,此时当订阅者Watcher接收到相应属性的变化,就会执行对应的更新函数,从而更新视图。因此接下去我们执行以下3个步骤,实现数据的双向绑定:

1.实现一个监听器Observer,用来劫持并监听所有属性,如果有变动的,就通知订阅者。

2.实现一个订阅者Watcher,可以收到属性的变化通知并执行相应的函数,从而更新视图。

3.实现一个解析器Compile,可以扫描和解析每个节点的相关指令,并根据初始化模板数据以及初始化相应的订阅器。

 

vue是通过Object.defineProperty()来实现数据劫持的。

Object.defineProperty( )可以来控制一个对象属性的一些特有操作,

比如读写权、是否可以枚举,这里我们主要描述 get和set,

 

可查看链接

https://www.cnblogs.com/libin-1/p/6893712.html

https://segmentfault.com/a/1190000006599500

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180856.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • TD—SCDMA的系统帧结构_sdh帧结构

    TD—SCDMA的系统帧结构_sdh帧结构TD-SCDMA物理信道用4层结构:超帧、无线帧、子帧和时隙/码。一个超帧长720ms,由72个无线帧组成,每个无线帧长10ms。TD-SCDMA将每个无线帧分为两个5ms的子帧,每个子帧由长度675us的7个主时隙和3个特殊时隙组成。3个特殊时隙分别是下行导频时隙(DwPTS,75us)、上行导频时隙(UpPTS,125us)和保护时隙(G,75us)构成。在这7个主时…

  • Java Exception的日志输出

    Java Exception的日志输出  最近项目中使用多线程,需要将catch到的Exception与其他日志信息一起输出,否则日志会比较杂乱不太好准确定位。那么JavaException到底有哪些信息呢?    Exception中的方法都是继承Throwable类的方法   一般catch到Exception,我们会直接用e.printStackTrace()方法输出exception的完整堆栈信息。但…

  • 卸载jdk1.7

    卸载jdk1.7卸载jdk1.7:1、开始->程序->控制面板->卸载程序->程序和功能2、找到jdk的两个程序:java7update45和java(TM)SEDevelopmentKit73、右键->卸载转载于:https://www.cnblogs.com/Noul/p/10406623.html…

  • JAVA对象转map_java处理字符串类型的map

    JAVA对象转map_java处理字符串类型的map1、使用fastJson将String转map:Stringout;ObjectsuccesResponse=JSON.parse(out);//先转换成ObjectMapmap=(Map)succesResponse;//Object强转换为Map2、String转java对象fastjson应用string字符串转换成java对象或者对象数…

  • 单片机的定时器_stm32的定时器有几个

    单片机的定时器_stm32的定时器有几个转载于:https://blog.csdn.net/tabactivity/article/details/99649928?depth_1-utm_source=distribute.pc_rele

  • 原码,补码,二进制减法计算_二进制的原码和补码

    原码,补码,二进制减法计算_二进制的原码和补码这篇博客从一道题说起,已知x = (1<<31)-3,求x&-x?这里面考察了二进制的减法,减法也就牵涉了原码补码的一些概念。这里进行下梳理。 一。原码,补码概念1.原码就是早期用来表示数字的一种方式。一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码例如:假设机器是32位系统,in…

发表回复

您的电子邮箱地址不会被公开。

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