【不止前端】Vue2变化侦测
【不止前端】Vue2变化侦测
余生变化侦测就是侦测数据的变化,当数据发生变化的时候,所依赖这个数据的地方需要执行对应的动作,可能是执行一个函数,也可能是更新视图(也是执行render函数)。
什么是变化侦测
变化侦测在前端三个框架中均有所涉及。变化侦测可以分为两种类型:一种是推,一种是拉。
在Angular和React中的变化侦测属于拉,但某个状态发生变化后,程序不知道具体是哪个状态发生了变化,只知道存在变化,然后会发送一个信号给框架,框架收到信号后,会采用暴力比对的方式找出那些DOM节点需要更新。这在Angular是脏值检查,在React中使用虚拟DOM。
在Vue中,采用的是推。当状态发送变化时,能知道是那个状态发生了变化,并推送给对应的依赖于这个状态的地方
如何跟踪变化
Vue2中采用的是Object.defineProperty
, Vue3中采用的是Proxy
。本文主要对前者进行介绍。