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中是如何对数据进行变化侦测的。

相关推荐
paopaokaka_luck2 小时前
基于SpringBoot+Uniapp的健身饮食小程序(协同过滤算法、地图组件)
前端·javascript·vue.js·spring boot·后端·小程序·uni-app
Villiam_AY2 小时前
Redis 缓存机制详解:原理、问题与最佳实践
开发语言·redis·后端
患得患失9493 小时前
【前端】【vscode】【.vscode/settings.json】为单个项目配置自动格式化和开发环境
前端·vscode·json
UQWRJ3 小时前
菜鸟教程R语言一二章阅读笔记
开发语言·笔记·r语言
飛_3 小时前
解决VSCode无法加载Json架构问题
java·服务器·前端
岁忧4 小时前
macOS配置 GO语言环境
开发语言·macos·golang
朝朝又沐沐5 小时前
算法竞赛阶段二-数据结构(36)数据结构双向链表模拟实现
开发语言·数据结构·c++·算法·链表
YGY Webgis糕手之路5 小时前
OpenLayers 综合案例-轨迹回放
前端·经验分享·笔记·vue·web
魔尔助理顾问6 小时前
系统整理Python的循环语句和常用方法
开发语言·后端·python
90后的晨仔6 小时前
🚨XSS 攻击全解:什么是跨站脚本攻击?前端如何防御?
前端·vue.js