首页 > 其他 > 详细

Vue数据双向绑定原理

时间:2019-08-14 21:45:10      阅读:113      评论:0      收藏:0      [点我收藏+]

先看效果图

技术分享图片

//代码:
<div id="app">
    <input v-model="name" type="text">
    <h1>{{name}}</h1>
</div>
<script src="./js/observer.js"></script>
<script src="./js/watcher.js"></script>
<script src="./js/compile.js"></script>
<script src="./js/index.js"></script>
<script>
const vm = new Mvue({
    el: "#app",
    data: {
        name: "我是摩登"
    }
});
</script>

在说到数据的双线绑定前先熟悉下MVVM

什么是MVVM

MVVM 是 Model-View-ViewModel 的缩写。mvvm 是一种设计思想。Model 层代表数据模型,也可以在 Model 中定义数据修改和操作的业务逻辑;View 代表 UI 组件,它负责将数据模型转化成 UI 展现出来,ViewModel 是一个同步 View 和 Model 的对象。

在 MVVM 架构下,View 和 Model 之间并没有直接的联系,而是通过 ViewModel 进行交互,Model 和 ViewModel 之间的交互是双向的, 因此 View 数据的变化会同步到 Model 中,而 Model 数据的变化也会立即反应到 View 上。

ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而 View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作 DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。

分析

我们都知道MVVM模式在于数据和视图层的同步,也就是说当视图层发生变化时数据也将发生变化.当数据发生变化时视图也会发生改变

视图成发生变化时我们可以通过事件监听即可

数据发生改变通知视图成方法

技术分享图片

正题来了

当我们数据方式改变时我们可以通过 Object.defineProperty 自动触发set函数从而能够通知我们跟新视图.

数据双向绑定的原理

结合上面的分析我们可以得出Vue数据双向绑定是通过数据劫持结合* 发布订阅者模式 类实现的,我们也知道 数据劫持 * 是通过Object.defineProperty 方法,当我们知道这些后我们就需要一个监听器 Observer 来监听属性的变化,得知属性的变化后我们就需要一个Watcher 订阅者来更新视图,然后我们还需要一个compile 指令解析器,原来解析我们的节点元素的* 指令 * 和 * 初始化视图 *

Observer 监听器:用来监听属性的变化通知订阅者
Watcher 订阅者:收到属性的变化,然后更新视图
Compile 解析器:解析指令,初始化模版,绑定订阅者
技术分享图片

Vue数据双向绑定原理

原文:https://www.cnblogs.com/Alangc612/p/11354444.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!