Vue2.x 与Vue3.x 双向数据绑定区别

图片描述
看过Vue2.x的源码都知道,其双向数据绑定原理是经过es5的Object.defineProperty,中的set方法来实现数据劫持的,可是有一个弊端就是没法兼听到数组内部的数据变化(固然咱们能够经过arr = arr.concat([])),来实现内部数据变化的检测。相比Vue3有必定的性能问题。前端

Vue3.x是用ES6的语法 Proxy(Proxy 怎么用你们可自行百度,网上教程大把,我就不在这赘述了)对象来实现的,这个玩意儿也能够实现数据的劫持,相比Object.defineProperty的优点是:能够检测到数组内部数据的变化,以下图:vue

![图片上传中...]vue-cli

clipboard.png

听说proxy要比Object.defineProperty的内存减半,vue3.x还没正式发布,我也只是据说,据说哈,减不减半我不知道也不敢下结论。数组

clipboard.png

你觉得这就完了吗?哈哈哈哈,你没猜错,IE系列都不兼容Proxy,哈哈哈哈哈。框架

clipboard.png

But性能

clipboard.png

社会是要向前进的,这点相信尤大大已经为咱们考虑到了,确定会有向下兼容的方案,那就是用原始的Object.defineProperty咯。es5

写在最后:你们无论学什么框架,必定要尝试去读下别人的源码,不要一上来就vue-cli 就咔咔咔开撸。若是每一个前端都会vue-cli的话,那请问你的竞争力在哪?spa

最后但愿个人分享可以帮助到你们。对象

相关文章
相关标签/搜索