Vue简单实现原理详解

2020-06-16 06:55:36易采站长站整理

本文实例讲述了Vue实现原理。分享给大家供大家参考,具体如下:

用了

Vue
也有两年时间了,一直以来都是只知其然,不知其所以然,为了能更好的使用
Vue
不被
Vue
所奴役,学习一下
Vue
底层的基本原理。

Vue
官网有一段这样的介绍:当你把一个普通的
JavaScript
对象传给
Vue
实例的
data
选项,
Vue
将遍历此对象所有的属性,并使用
Object.defineProperty
把这些属性全部转为
getter/setter
Object.defineProperty
ES5
中一个无法
shim
的特性,这也就是为什么
Vue
不支持 IE8 以及更低版本浏览器。

通过这一段的介绍不难可以得出,Vue是通过

Object.defineProperty
对实例中的
data
数据做了挟持并且使用
Object.defineProperty
getter/setter
并对其进行处理之后完成了数据的与视图的同步。

这张图应该不会很陌生,熟悉

Vue
的同学如果仔细阅读过
Vue
文档的话应该都看到过。猜想一下
Vue
使用
Object.defineProperty
做为
ViewModel
,对数据进行挟持之后如果
View
Model
发生变化的话,就会通知其相对应引用的地方进行更新处理,完成视图的与数据的双向绑定。

下面举个例子:

html:


<div id="name"></div>

javaScript:


var obj = {};
Object.defineProperty(obj,"name",{
get() {
return document.querySelector("#name").innerHTML;
},
set(val) {
document.querySelector("#name").innerHTML = val;
}
})
obj.name = "Aaron";

通过上面的代码使用

Object.defineProperty