1. 简析mvvm框架


目前angular,reat和vue都是mvvm类型的框架

以vue为例

这里的vm 就是vue框架,它相当于中间枢纽的作用,连接着model 和view.

  • 当前台显示的view发生变化了,它会实时反应到viewModel上,如果有需要,viewModel 会通过ajax等方法将改变的数据 传递给后台model
  • 同时从后台model获取过来的数据,通过vm将值响应到前台UI上
  • 双向绑定原理


vm的核心是view 和 data

  • 当data 有变化的时候它通过Object.defineProperty()方法中的set方法进行监控,并调用在此之前已经定义好data 和view的关系了的回调函数,来通知view进行数据的改变
  • 而view 发生改变则是通过底层的input 事件来进行data的响应更改

vue是通过Object.defineProperty()来实现数据劫持的。

Object.defineProperty( )是用来做什么的?它可以来控制一个对象属性的一些特有操作,比如读写权、是否可以枚举,这里我们主要先来研究下它对应的两个描述属性get和set

varBook= {}varname= '';Object.defineProperty(Book, 'name', {set:function(value) {name= value;console.log('你取了一个书名叫做'+ value);},get:function() {return'《'+ name+ '》'}})console.log(Book)Book.name= 'vue权威指南'; // 你取了一个书名叫做vue权威指南console.log(Book.name); // 《vue权威指南》// get 是在读取那么属性的时候触发的// set 是在设置属性值的时候触发的

实现方法: 观察者模式

Observer(Objec.defineProperty中的set)监听data的变化,当data有变化的时候通知观察者列表Dep(里面有与data变化对应的update函数),watcher负责向观察者列表里添加(订阅)对应的更新函数,Dep里的更新函数执行完了之后将最新的值更新到view上。

具体的代码实现可参考:https://www.cnblogs.com/libin-1/p/6893712.html

浅谈vue双向绑定原理相关推荐

  1. 浅谈vue双向绑定的原理

    一.什么是双向绑定 我们先从单向绑定切入 单向绑定非常简单,就是把Model绑定到View,当我们用JavaScript代码更新Model时,View就会自动更新 双向绑定就很容易联想到了,在单向绑定 ...

  2. 浅聊vue双向绑定原理Object.defineProperty-/-Proxy

    什么是双向绑定呢?vue又是怎么做的我们接下来就聊一聊 什么是双向绑定? 当数据模型data变化时,页面视图会得到响应更新 vue又是怎么做的? vue其实现原理是对data的getter/sette ...

  3. vue双向绑定原理及实现

    vue双向绑定原理及实现 一.MVC模式 二.MVVM模式 三.双向绑定原理 1.实现一个Observer 2.实现一个Watcher 3.实现一个Compile 4.实现一个MVVM 四.最后写一个 ...

  4. 【vue双向绑定原理浅析】

    vue双向绑定原理浅析 1.什么是双向绑定? ​ 所谓双向绑定,指的是vue实例中的data与其渲染的DOM元素的内容保持一致,无论谁被改变,另一方会相应的更新为相同的数据.(数据变化更新视图,视图变 ...

  5. 前端技巧|vue双向绑定原理,助你面试成功

    在面试一些大厂的时候,面试官可能会问到你vue双向数据绑定的原理是什么?有些小伙伴不知道是什么东西,这样你在面试官的眼里就大打折扣了.今天小千就来给大家介绍一下vue的双向绑定原理,千万不要错过啦. ...

  6. Vue双向绑定原理代码实现

    1.代码实现Vue双向绑定与事件绑定,v-bind v-model v-on DOM结构准备 <body><div id="app"><form> ...

  7. 浅谈Vue响应式原理

    一.Vue中的响应式 Vue 最独特的特性之一,是其非侵入性的响应式系统.数据模型仅仅是普通的 JavaScript 对象.而当你修改它们时,视图会进行更新. 二.响应式的基本原理 1.通过Objec ...

  8. 浅谈Vue 自定义事件——原理及用法

    前言 在Vue 中,对HTML的原生事件做了支持.例如:click.focus.change等事件.除了原生事件外,Vue 还允许用户自定义事件. 什么是事件?什么是自定义事件? 在了解自定义事件前, ...

  9. 通俗易懂了解Vue双向绑定原理及实现

    https://www.cnblogs.com/wangjiachen666/p/9883916.html 亲测可用

最新文章

  1. MATLAB 不能用了,哪些替代品可以继续搞科研?
  2. Kafka源码深度解析-序列3 -Producer -Java NIO
  3. JAVA入门级教学之(JAVA注释)
  4. 又跑回去拿的即时通讯
  5. 【转】xPath语法介绍
  6. java比对文本文件_Java编程实现比对两个文本文件并标记相同与不同之处的方法...
  7. 【C++】类型转换(const_cast、dynamic_cast、static_cast、reinterpret_cast)
  8. PowerBuilder DataWindow 38个开发技巧
  9. 推荐一个自动写paper的软件,让IEEE吐血泪奔
  10. Movavi Photo Editor零失败更改图片背景教程
  11. 基于SSM的医院病历管理系统
  12. idea设置背景护眼色
  13. html5库存管理,库存管理的基本方法
  14. Labview关于波形图
  15. RouterOS 自动拨号直至获得指定IP段IP的脚本
  16. php开启端口复用,WebServer端口复用后门
  17. ubuntu python3.5安装_ubuntu12.04安装python3.5及pip3和setuptools
  18. [BUGKU] [MISC] 图穷匕见
  19. 【Spark】广播变量和累加器
  20. 海关数据的作用你肯定没搞懂!

热门文章

  1. [转载]树莓派随身工具箱:中间人劫持获取控制权
  2. 02-第一个Python程序
  3. c语言字符串碱基互补配对,C++ 6.0 配对碱基链 自己编的程序输出总是有问题 求解...
  4. OJ每日一练——配对碱基链
  5. 电脑必备常用软件好用的软件合集
  6. 【编程题】【Scratch二级】2021.09 画正多边形
  7. centos7 hadoop+hive 安装
  8. SpringBoot 微信退款申请
  9. 建站必备SEO工具和网站分析工具
  10. android recyclerview 横向移动,RecyclerView实现纵向和横向滚动