美文网首页
Vue实现双向数据绑定的原理笔记

Vue实现双向数据绑定的原理笔记

作者: Pretty_Boy | 来源:发表于2017-08-15 11:15 被阅读164次

再看到这个题的时候,作为入门的程序员,我只能:
想到用原生dom去利用定时器或对特定触发事件去对值做一个动态改变。
当我搜索以后发现做法有以下三种:
发布者-订阅模式【backbone.js】完全没有听过的节奏
脏值检查【angular.js】在我初入AngularJS的时候听过,但犹豫换代的原因,对angular并没有坚持下去
数据劫持【vue.js】在实习公司使用的就是此框架,但我其实仅限于了解并且会使用,在慢慢的深入(我承认我深入的很慢)

  • 发布者-订阅模式
    通过sub,pub的方式实现,而笔者对此没有深入了解

http://www.html-js.com/article/Study-of-twoway-data-binding-JavaScript-talk-about-JavaScript-every-day

  • 脏值检查
    通过脏值检测的方式对数据是否变更决定是否更新视图(触发事件后,遍历所有数据来确定变化的数据)
    在angular中
  • DOM事件
  • XHR事件
  • Location变更事件
  • Timer事件
  • $digest()和$apply()
  • 数据劫持
    数据劫持结合发布者订阅者模式,通过Object.defineProperty()来劫持各个属性的getter,setter

针对Object.defineProperty(obj,prop,descriptor)
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

其中描述符分两种:数据描述符和存取描述符

  • 数据描述符的键如下:
    configurable(bool),是否可改变以及被删除
    enumerable(bool),是否可被枚举
    value,值
    writable(bool),是否可被赋值运算更改
  • 存取描述符的键如下:
    configurable(bool),是否可改变以及被删除
    enumerable(bool),是否可被枚举
    get,
    set,
    其中这些属性是可以被继承的,需要时断开继承

使用此方法时,所有bool值都默认为false,其他值默认为undefined。并且若无特定属性时,默认为数据描述符


如何实现MVVM如下

  1. 实现数据监听Observer
  2. 实现指令解析Compile
  3. 实现Watcher【Observer和Compile的桥梁】
image.png

作者写的很详细,深入了解请戳
https://segmentfault.com/a/1190000006599500

相关文章

  • 深入Vue响应式原理

    1.Vue的双向数据绑定 参考 vue的双向绑定原理及实现Vue双向绑定的实现原理Object.definepro...

  • vue 双向数据绑定

    Vue实现数据双向绑定的原理:Object.defineProperty()vue实现数据双向绑定主要是:采用数据...

  • Vue实现数据双向绑定的原理

    Vue实现数据双向绑定的原理:Object.defineProperty() vue实现数据双向绑定主要是:采用数...

  • 【转】JavaScript的观察者模式(Vue双向绑定原理)

    关于Vue实现数据双向绑定的原理,请点击:Vue实现数据双向绑定的原理原文链接:JavaScript设计模式之观察...

  • Vue原理研究之双向数据绑定

    前言 本篇文章主要研究Vue的双向数据绑定的学习笔记。具体细节请参考《剖析Vue原理&实现双向绑定MVVM》。 原...

  • 前端理论面试--VUE

    vue双向绑定的原理(详细链接) VUE实现双向数据绑定的原理就是利用了 Object.definePropert...

  • Vue双向数据绑定原理

    剖析Vue实现原理 - 如何实现双向绑定mvvm 本文能帮你做什么?1、了解vue的双向数据绑定原理以及核心代码模...

  • 关于双向绑定的问题

    剖析Vue实现原理 - 如何实现双向绑定mvvm 本文能帮你做什么?1、了解vue的双向数据绑定原理以及核心代码模...

  • vue面试知识点

    vue 数据双向绑定原理 vue实现数据双向绑定原理主要是:采用数据劫持结合发布订阅设计模式的方式,通过对data...

  • 前端面试题:VUE

    1. vue的双向数据绑定实现原理? 2. vue如何在组件之间进行传值? 3. vuex和vue的双向数据绑定...

网友评论

      本文标题:Vue实现双向数据绑定的原理笔记

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