Vue源码系列讲解——变化侦测篇【上】(何为变化侦测)

目录

[1. 前言](#1. 前言)

2.什么是变化侦测

3.总结


1. 前言

众所周知,Vue最大的特点之一就是数据驱动视图,那么什么是数据驱动视图呢?在这里,我们可以把数据理解为状态,而视图就是用户可直观看到页面。页面不可能是一成不变的,它应该是动态变化的,而它的变化也不应该是无迹可寻的,它或者是由用户操作引起的,亦或者是由后端数据变化引起的,不管它是因为什么引起的,我们统称为它的状态变了,它由前一个状态变到了后一个状态,页面也就应该随之而变化,所以我们就可以得到如下一个公式:

UI = render(state)

上述公式中:状态state是输入,页面UI输出,状态输入一旦变化了,页面输出也随之而变化。我们把这种特性称之为数据驱动视图。

OK,有了基本概念以后,我们再把上述公式拆成三部分:staterender()以及UI。我们知道stateUI都是用户定的,而不变的是这个render()。所以Vue就扮演了render()这个角色,当Vue发现state变化之后,经过一系列加工,最终将变化反应在UI上。

那么第一个问题来了,Vue怎么知道state变化了呢?

2.什么是变化侦测

Vue是怎么知道state变化了呢?换句话说,数据变化了是怎么通知给Vue呢?那么,这就引出了Vue中的变化侦测。

变化侦测就是追踪状态,亦或者说是数据的变化,一旦发生了变化,就要去更新视图。

变化侦测可不是个新名词,它在目前的前端三大框架中均有涉及。在Angular中是通过脏值检查流程来实现变化侦测;在React是通过对比虚拟DOM来实现变化侦测,而在Vue中也有自己的一套变化侦测实现机制。

那么,接下来我们就通过阅读源码来学习一下Vue是怎么实现自己的对数据变化进行侦测的机制。

3.总结

首先,我们知道了什么是数据驱动视图。数据驱动视图简单来说就是数据变化引起视图变化,那么第一步就是先要知道数据什么时候发生变化,也就是说对数据的变化要进行侦测。

其次,数据的变化侦测在三大框架中均有涉及,不同的框架有着自己的一套侦测机制。

最后,我们从源码出发,学习在Vue中是如何对数据进行变化侦测的。

相关推荐
Myli_ing9 分钟前
考研倒计时-配色+1
前端·javascript·考研
色空大师11 分钟前
23种设计模式
java·开发语言·设计模式
余道各努力,千里自同风11 分钟前
前端 vue 如何区分开发环境
前端·javascript·vue.js
PandaCave18 分钟前
vue工程运行、构建、引用环境参数学习记录
javascript·vue.js·学习
软件小伟20 分钟前
Vue3+element-plus 实现中英文切换(Vue-i18n组件的使用)
前端·javascript·vue.js
Bruce小鬼24 分钟前
QT文件基本操作
开发语言·qt
2202_7544215429 分钟前
生成MPSOC以及ZYNQ的启动文件BOOT.BIN的小软件
java·linux·开发语言
我只会发热36 分钟前
Java SE 与 Java EE:基础与进阶的探索之旅
java·开发语言·java-ee
醉の虾42 分钟前
Vue3 使用v-for 渲染列表数据后更新
前端·javascript·vue.js
懷淰メ1 小时前
PyQt飞机大战游戏(附下载地址)
开发语言·python·qt·游戏·pyqt·游戏开发·pyqt5