ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-05-07

2021-05-07 16:02:26  阅读:109  来源: 互联网

标签:订阅 vue 07 05 绑定 2021 双向 数据 View


在使用vue的时候给我最大的感受就是双向绑定实在是太方便了吧,这次来谈谈我的理解。

一:MVVM模式;
在这里插入图片描述

说到vue的双向绑定首先联系到的就是MVVM(Model-View-ViewModel)模式了,如下图所示,当试图发生改变的时候传递给VM,再让数据得到更新,当数据发生改变的时候传给VM,使得试图发生改变;

MVVM模式是通过以下三个核心组件组成,每个都有它自己独特的角色:

    Model - 包含了业务和验证逻辑的数据模型

    View - 定义屏幕中View的结构,布局和外观

    ViewModel - 扮演“View”和“Model”之间的使者,帮忙处理 View 的全部业务逻辑

二、vue数据双向绑定原理

vue的数据双向绑定主要通过Object.defineProperty()方法来进行数据劫持以及发布者-订阅模式来实现的,

vue是怎么实现数据劫持的呢?vue实例话的时候会去遍历所有的属性,给这些属性添加get和set方法进行数据劫持;

在这里插入图片描述

以上就是mvvm实现双向绑定的思路了,那么具体怎么实现呢?

我们开头的时候说到了,要想实现数据的双向绑定首先就要通过数据拦截来进行监听数据的改变,这个时候就要设置一个监听器Observer来进行监听,如果属性发生改变的话就告诉订阅者Watcher看看是否需要改变,同时的话订阅者可以有好多个,我们就用一个订阅者管理器(Dep)来管理这些订阅者。紧接着我们还要有个指令解析器来对每个节点进行扫描和解析(解析节点的指令如v-on),把他们初始化成一个订阅器Watcher,并且绑定相应的函数,Watcher会对比前后两个的数值是否发生变化,然后确定是否通知视图进行重新渲染;

在这里插入图片描述

以上的图片可以具,体归纳为:

1.实现一个监听器Observer,用来劫持并监听所有属性,如果有变动的,就通知订阅者。

2.实现一个订阅者Watcher,可以收到属性的变化通知并执行相应的函数,从而更新视图。

3.实现一个解析器Compile,可以扫描和解析每个节点的相关指令,并根据初始化模板数据以及初始化相应的订阅器。

以上内容为转载自用,不用于商业用途。
作者:super_wei
链接:https://www.jianshu.com/p/5fe2664ff5f7

标签:订阅,vue,07,05,绑定,2021,双向,数据,View
来源: https://blog.csdn.net/Marin6/article/details/116495295

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有