我是这么理解Vue中的响应式系统的

遇到知识,尤其是复杂的概念,我不能类比的话,我很难接收(所以学习很差...)。在看了大神染陌同学的Vue源码解析后,我想分享一下我所类比的Vue响应式系统,您得先看他的文章(至少看他写的Vue的响应式)。

这是我自己的想法,或许适合您,或许也不适合您,还望多多指点。本文没有代码。

在此之前就当您看过《生化危机》。

我是这样理解vue中的响应式系统原理的: 

new Vue({options}),就像《生化危机》中的世界,Vue中的data里的数据就像每一个与这个世界有必然接触的生物(无论你是爱丽丝、丧史、还是丧狗)只要你与这个世界产生了互动,你都会被Vue内部的一个庞大团体‘保护伞公司’(对应Vue源码中的observer)所影响,


它可以观察一切生物。保护伞公司通过遍布全球的基地“就拿内达华沙漠中的地下实验室”(对应Vue中的defineReactive)对区域范围内的生物进行监控(让生物变成可观察的)。


而这一基地具体的操控者又是“艾萨克博士”(对应Vue中的Object.defineprototy)。 Object.defineprototy方法中的3个参数(且说3个),入参是一个obj(他是生物中的一个个体,就像爱丽丝),第二个参数key就像爱丽丝的技能点——是用枪、还是用土耳其军刀,第三个参数vaule是对应技能点的值。 艾萨克博士对每一个‘实验品’进行改造(他们是丧尸、是爱丽丝的克隆体、还更有爱丽丝本人,但他们都是data)。

艾萨克博士(Object.defineprototy)通过reactiveGetter对每一个data(生物,丧尸...)进行基因读取(这一个过程包括Vue中的“依赖收集”)。


通过reactiveSetter对每一个data进行写(就像基因改造,就像《生化3》中改造爱丽丝的克隆体)。 reactiveGetter时,主要是对data进行依赖收集,这一点很中重要(这关乎着为什么Vue中的数据发生改变,其view层也会改变)。

这个重要是如何维护的呢? 首先,依赖收集会让“可观察的”data知道,‘有地方依赖我的数据,我变化时要通知他们’。这个时候“红皇后”登场了,红皇后她(利用强大AI技术)能监视每一个生物(data)的信息,她就像Vue中的订阅者Dep。


红皇后能够为保护伞公司的那些利益集团高层(就像Vue中的Watcher)提供一切信息。


但她首先得知道哪些人是高层(这就像订阅者Dep有一个功能addSub用来存放Watcher观察者对象)。红皇后会在得知依赖收集对象发生改变(data数据变化)时通知这帮Watcher,对象视图要更新了...




更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图的顺序存储(邻接矩阵存储)【摘录自严长生老师的网站】

图是表达多对多关系的一种数据结构,组成要素为顶点和连接顶点的边。 根据边有无方向可分为有向图和无向图 当边有权重时,升级为有向网和无向网 图在存储时,可采用邻接矩阵,比如下面的无向图(A)和&#xff0…

Neo4j:使隐式关系成为显式和双向关系

最近,我阅读了Michal Bachman关于 Neo4j中双向关系的文章 ,他建议对于某些关系类型,我们对关系的方向不那么感兴趣,因此可以在查询时忽略它。 他使用以下示例显示了Neo Technology和GraphAware之间的合作关系: 两家公…

复旦大学计算机学院博士生王斌,复旦大学计算机科学技术学院博士生刘鹏飞荣获...

计算机科学技术学院发布时间:2017-01-04 小字体 中字体 大字体2016年12月22日,历时七个月选拔的2016年度百度奖学金获奖者揭晓,复旦大学计算机科学技术学院2014级博士生刘鹏飞以其在“自然语言处理与深度学习”上取得的突出成绩,从国内外近百所著名高校数百位竞争者中脱颖而出,…

Deno 兼容浏览器具体指的是什么?

Deno 里面有一句描述:"Aims to be browser compatible",可以看到 Deno 的目标是兼容浏览器。那么这里的兼容浏览器到底如何是什么意思呢? 我简单谈谈我的理解吧。 首先这里的兼容性肯定不是 Deno 直接在浏览器端运行。因为 Deno …

判断按键值_「正点原子NANO STM32开发板资料连载」第十六章电容触摸按键实验...

1)实验平台:ALIENTEK NANO STM32F411 V1开发板2)摘自《正点原子STM32F4 开发指南(HAL 库版》关注官方微信号公众号,获取更多资料:正点原子第十六章电容触摸按键实验上一章,我们介绍了 STM32F4 的…

将社交登录添加到Spring MVC Web应用程序:注册和登录

本教程的第一部分描述了如何配置Spring Social 1.1.0和Spring Security 3.2.0,但它留下了两个非常重要的问题尚未解答。 这些问题是: 用户如何创建新用户帐户? 用户如何登录? 现在该弄脏我们的手并回答这些问题了。 我们的示例…

实验五 编写、调试具有多个段的程序

(1)将下面的程序编译、连接,用Debug加载、跟踪,然后回答问题。 ①CPU执行程序,程序返回前,data段的数据为多少? 见下图d 0770:0000 000f结果。 ②CPU执行程序,程序返回前&#xff0c…

手机工商银行怎么转账_工商银行信用卡要哪些申请条件?想成功办理你需要了解这些!...

工商银行信用卡一直是卡友们热议的对象,也有不少卡友问过小白:工商银行信用卡怎么办理?要哪些条件?要等多长时间?那么今天小白就为大家详细的讲解一下工商银行信用卡申请的各种方法和技巧,希望对大家有帮助…

数据可视化的基本原理——视觉通道

数据可视化为了达到增强人脑认知的目的,会利用不同的视觉通道对冰冷的数据进行视觉编码。 我们在数据可视化的时候,一方面,展现可视化对象本身的位置、特性,对应的视觉通道类型是定性或者分类,比如汽车在什么地方、汽…

linux测试地址是否能访问_一个小测试能看出孩子注意力是否集中,提前弥补,上小学会很轻松...

文|秘籍君不少家长虽然重视孩子的教育,却总是习惯“临阵磨枪”,具体体现在:孩子在上幼儿园的前一两个月才开始着急,害怕孩子适应不了幼儿园;孩子上了大班才开始重视“幼小衔接”,却不知道,从孩子…

服务器怎么禁止iis静态文件,如何禁止IIS缓存静态文件

禁止IIS缓存静态文件(png、js、html等)背景:IIS为了提高性能,默认情况下会对静态文件js、html、gif、png等做内部缓存,这个缓存是在服务器iis进程的内存中的。IIS这么做在很大程度上可以提高静态文件的访问性能,在正常情况下只要静…

汇编实验五

一、 二、 三、 四、 第一个 反汇编后发现不行 第二个 发现也不行 第三个 发现代码正确 五、 编写代码如下 调试后查看内存,发现数据相加了 六、 编写代码如下 发现逆序存储成功 七、实验总结 对于代码段的使用有了更加深入的了解。 但是对于代码段内存这块还是不懂…

eclipse RTC下载的代码无android sdk

问题现象: 修复过程: 1.无ADT,安装ADT(FQ操作) https://dl-ssl.google.com/android/eclipse/ a图 b图 2.下载android sdk a.下载 3.应用到eclipse中去 转载于:https://www.cnblogs.com/liuyj-vv/p/9299913.html

亚马逊免费使用套餐:在EC2 Linux实例上安装Tomcat 7

Amazon Web Services提供了12个月的免费使用期限,使开发人员可以在云中运行任何他们想要的东西。 免费层包括14个服务,其中Web开发人员最关注EC2服务。 EC2是一项服务,通过停止和启动Windows和/或Linux的虚拟实例来提供可调整大小的虚拟计算。…

笔记:隐式转换规则

学习并背诵全文 原始值 类型UndefinedNullStringBooleanNumber值undefinednull所有字符串true false所有数字/NaN 引用类型 Object的成员叫对象,包括Array,Function,Math,Date,JSON,RegExp等除了原始值…

ble连接过程建立_九点之蓝牙连接

蓝牙连接蓝牙连接是如何进入到连接状态呢,首先必须经历前面提到的广播阶段,主端通过扫描到从端的广播来发现这个设备,之后让主端发出连接请求来要求与从端建立连接,便可以进入到连接状态。由于蓝牙连接牵涉的点比较多,…

华为服务器系统蓝屏,服务器主机蓝屏

服务器主机蓝屏 内容精选换一换云服务器创建后区域固定,不能将云服务器转移到另一个区域,也不能将云服务器转移到另一个帐号。您可以通过镜像迁移方式实现云服务器的跨帐号跨区域迁移。服务器迁移的常见场景与常用的迁移方式请参考常见的服务器迁移场景。…

多对一映射、一对多映射

Emp员工表 Dept部门表 多对一映射 在查询时,需要获取两张以上关联表的数据,通过关联映射,可以由一个对象获取关联对象的信息,例如:查询一个Emp员工对象,可以 通过关联映射获取员工所在的部门Dept对象信息 …

一道面试题目引发的思考

起因 多列布局是前端一个经典的反复被提及的面试题目,最典型的即两列,左列定宽菜单栏,右列变宽为内容区域。 通常得到的答案无外乎左列浮动定宽,然后右列或浮动,或设置外边距,或绝对定位等等。偶尔会有面试…

uniapp弹出框_uniApp上拉刷新,下拉加载,以及筛选功能

uniApp插件市场有很多友好的插件,今天举一个例子如上图所示,实现上拉刷新,下来加载,右上角点击弹出筛选框,只需要在插件市场搜索刷新选择你想要的效果(也可以下载后自己改动效果)点击导入插件,会自动打开项…