美文网首页我爱编程
来来来,懂vue送mvvm原理

来来来,懂vue送mvvm原理

作者: duffy990 | 来源:发表于2018-04-16 00:02 被阅读0次

从vue说起

vue相信大家都很熟悉,如何使用,本人就不在这里演示了,相信这个都比我熟,今天我们来说说vue的mvvm原理,比较代码简单实现。下面简单了解一下 Vue.js 关于双向绑定的一些实现细节:

Vue.js 是采用 Object.defineProperty 的 getter 和 setter,并结合观察者模式来实现数据绑定的。当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为 getter/setter。用户看不到 getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化。 vue.png

Observer 数据监听器,能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通知订阅者,内部采用Object.defineProperty的getter和setter来实现。
Compile 指令解析器,它的作用对每个元素节点的指令进行扫描和解析,根据指令模板替换数据,以及绑定相应的更新函数。
Watcher 订阅者, 作为连接 Observer 和 Compile 的桥梁,能够订阅并收到每个属性变动的通知,执行指令绑定的相应回调函数。
Dep 消息订阅器,内部维护了一个数组,用来收集订阅者(Watcher),数据变动触发notify 函数,再调用订阅者的 update 方法。

从图中可以看出,当执行 new Vue() 时,Vue 就进入了初始化阶段,一方面Vue 会遍历 data 选项中的属性,并用 Object.defineProperty 将它们转为 getter/setter,实现数据变化监听功能;另一方面,Vue 的指令编译器Compile 对元素节点的指令进行扫描和解析,初始化视图,并订阅Watcher 来更新视图, 此时Wather 会将自己添加到消息订阅器中(Dep),初始化完毕。

当数据发生变化时,Observer 中的 setter 方法被触发,setter 会立即调用Dep.notify(),Dep 开始遍历所有的订阅者,并调用订阅者的 update 方法,订阅者收到通知后对视图进行相应的更新。我们需要实现的也是上面的大概功能,来来来,废话不说,马上开路

defineproperty 是 啥 ?!

相信大家都指现在无论是React还是Vue还是最新的Angular,其实实现方式都更相近了
那就是通过数据劫持+发布订阅模式
真正实现其实靠的也是ES5中提供的Object.defineProperty,当然这是不兼容的所以Vue等只支持IE8+
下面我们简单说说它的使用:

defineproperty 是 啥 ?!

还你mvvm原理简单实现

数据劫持

为什么要这样做呢,目的就是观察对象,给对象增加Object.defineProperty
vue特点是不能新增不存在的属性 不存在的属性没有get和set

数据代理

其实就是更加美观直接、优雅,好处多多哦

数据编译

把拿到的{{}}里面的代码编译出来解析

发布订阅

数据更新视图

双向数据绑定(面试常问哦~)

大纲已出,明天细敲!!

相关文章

  • 来来来,懂vue送mvvm原理

    从vue说起 vue相信大家都很熟悉,如何使用,本人就不在这里演示了,相信这个都比我熟,今天我们来说说vue的mv...

  • vue原理面试题资源整理

    vuex面试题 Vue生命周期 周期2 Vue通信 父子 兄弟 Vue响应式原理 MVVM Vue axios原理...

  • Vue2.0原理与MVVM的实现

    剖析Vue原理&实现双向绑定MVVM vue源码 双向绑定 -- MVVM 目前几种主流的MVC框架都实现了单向数...

  • Vue的34道题

    1、如何理解MVVM原理? MVVM的实现原理 2、响应式数据的原理是什么? 响应式数据与数据依赖基本原理vue双...

  • vue的mvvm原理解析及手写一个

    # 手写vue的mvvm实现原理 ## 1:mvc和mvvm的区别? MVC:modal-view-control...

  • 2019-10-31

    手写vue的mvvm实现原理 1:mvc和mvvm的区别? MVC:modal-view-controller,比...

  • Vue MVVM 原理实现

    核心原理 MVVM 双向数据绑定, 数据驱动视图 Vue 实现 MVVM 采用 数据劫持 + 发布订阅模式 : ...

  • 好程序员web前端培训分享MVVM框架Vue实现原理

    好程序员web前端培训分享MVVM框架Vue实现原理,Vue.js是当下很火的一个JavaScript MVVM库...

  • Vue实现原理

    vue实现原理 1、了解Object的属性defineProperty 2、vue中mvvm的实现: 数据变化更新...

  • Vue原理

    vue原理相关 Vue核心概念 vue实例化 虚拟dom 模板编译 数据绑定(响应式) 组件化 MVVM mode...

网友评论

    本文标题:来来来,懂vue送mvvm原理

    本文链接:https://www.haomeiwen.com/subject/iiajkftx.html