这篇文章主要讲解了Vue是如何实现的,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
成都创新互联公司是专业的大方网站建设公司,大方接单;提供做网站、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行大方网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!用了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: