好家伙,

 

前面想了好久,都没想明白为什么要dep和watcher打配合才能实现数据-视图同步

为什么要多一个依赖管理这样的东西

给每个数据绑个watcher(xxfunction),然后,数据变了,调set,然后调xxfunction,不就行了,

然后今天突然想明白了,不是为什么要这么干,而是必须这么干

来看一个例子,xx汉堡店,胖虎汉堡店

 

蔬菜沙拉的原料只有蔬菜

牛肉汉堡的原材有蔬菜,面包和汉堡肉

现在,我必须紧盯这些食材,材料如果缺货,那么我就无法制作食物并提供给客人了

现在,一旦缺货,我将会触发某些操作,补货

这时候我们可以抽象一下他们的依赖关系

Dep(牛肉汉堡){

   watcher(蔬菜)

   watcher(面包)

   watcher(汉堡肉)

}

Dep(蔬菜沙拉){

  watcher(蔬菜)

}

写到这,相信你已经理解dep的作用了

我们看到的视图,与我们要操作的数据并不是完全一一对应的,

也许是一对多,也许是多对一,也许是多对多

在视图与操作中出现一个中间人,来管理这个依赖关系,就是dep

所以总结一下dep的作用是什么?

管理依赖关系

 

Vue源码学习(十):关于dep和watcher使用的一些思考的更多相关文章

  1. 【Vue源码学习】依赖收集

    前面我们学习了vue的响应式原理,我们知道了vue2底层是通过Object.defineProperty来实现数据响应式的,但是单有这个还不够,我们在data中定义的数据可能没有用于模版渲染,修改这些 ...

  2. Vue源码学习1——Vue构造函数

    Vue源码学习1--Vue构造函数 这是我第一次正式阅读大型框架源码,刚开始的时候完全不知道该如何入手.Vue源码clone下来之后这么多文件夹,Vue的这么多方法和概念都在哪,完全没有头绪.现在也只 ...

  3. Vue源码学习三 ———— Vue构造函数包装

    Vue源码学习二 是对Vue的原型对象的包装,最后从Vue的出生文件导出了 Vue这个构造函数 来到 src/core/index.js 代码是: import Vue from './instanc ...

  4. Vue源码学习二 ———— Vue原型对象包装

    Vue原型对象的包装 在Vue官网直接通过 script 标签导入的 Vue包是 umd模块的形式.在使用前都通过 new Vue({}).记录一下 Vue构造函数的包装. 在 src/core/in ...

  5. 最新 Vue 源码学习笔记

    最新 Vue 源码学习笔记 v2.x.x & v3.x.x 框架架构 核心算法 设计模式 编码风格 项目结构 为什么出现 解决了什么问题 有哪些应用场景 v2.x.x & v3.x.x ...

  6. 【Vue源码学习】响应式原理探秘

    最近准备开启Vue的源码学习,并且每一个Vue的重要知识点都会记录下来.我们知道Vue的核心理念是数据驱动视图,所有操作都只需要在数据层做处理,不必关心视图层的操作.这里先来学习Vue的响应式原理,V ...

  7. VUE 源码学习01 源码入口

    VUE[version:2.4.1] Vue项目做了不少,最近在学习设计模式与Vue源码,记录一下自己的脚印!共勉!注:此处源码学习方式为先了解其大模块,从宏观再去到微观学习,以免一开始就研究细节然后 ...

  8. Vue源码学习(一):调试环境搭建

    最近开始学习Vue源码,第一步就是要把调试环境搭好,这个过程遇到小坑着实费了点功夫,在这里记下来 一.调试环境搭建过程 1.安装node.js,具体不展开 2.下载vue项目源码,git或svn等均可 ...

  9. Vue 源码学习(1)

    概述 我在闲暇时间学习了一下 Vue 的源码,有一些心得,现在把它们分享给大家. 这个分享只是 Vue源码系列 的第一篇,主要讲述了如下内容: 寻找入口文件 在打包的过程中 Vue 发生了什么变化 在 ...

  10. Vue源码学习(一)———数据双向绑定 Observer

    从最简单的案例,来学习Vue.js源码. <body> <div id='app'> <input type="text" v-model=" ...

随机推荐

  1. [转帖] shell管道咋堵住了

    https://www.cnblogs.com/codelogs/p/16060378.html 背景# 起因是这样的,我们想开发一个小脚本,当cpu使用率过高时,使用jstack将java的线程栈保 ...

  2. 商智C店H5性能优化实战

    前言 商智C店,是依托移动低码能力搭建的一个应用,产品面向B端商家.随着应用体量持续增大,考虑产品定位及用户体验,我们针对性能较差页面做了一次优化,并取得了不错的效果,用户体验值(UEI)从一般提升到 ...

  3. iframe父页面传递参数给子页面

    父页面通过ifarame传递参数 有些时候,我们需要在嵌套页面. 我们就需要使用iframe了. 通过iframe传递参数给子页面. 需求描述,当我们点击按钮的时候. 传递参数给子页面.子页面接受后展 ...

  4. js-正则表达式边界符和前瞻、后顾的使用-保证你看明白

    创建正则表达式第两种方式 1==>通过new字符的方式,来创建正则表达式 2==>通过创建字面量的方式去创建 1.new字符的方式 let regexp=new RegExp(/123/) ...

  5. elemetui-中在input框中回车

    在input框中回车 <el-input @keyup.enter.native="gotoLogin" class="my-el-input" plac ...

  6. 将字符串变成数组split

    字符串变成数组,常用来获取数组中我们需要的值. var str="http://op/adfie/life.png"; let arr=str.split('.'); consol ...

  7. 提高Android Studio的编译速度(更快出包减少等待)

    硬件和软件的准备 对于经常要出包而且一次要出多个渠道APK的同事来说,每次漫长的打包等待是一件消耗生命且无意义事情. google官方提高编译速度的文档:https://developer.andro ...

  8. TienChin 验证码响应结果分析&验证码生成接口分析

    验证码响应结果分析 首先从前端开始进行分析,进入到登录页面,打开开发者工具(f12),找到 network,f5 刷新一下页面,然后,筛选一下,筛选内容为 Fetch/XHR: 你会发现列表中有两项内 ...

  9. 深入探索OCR技术:前沿算法与工业级部署方案揭秘

    深入探索OCR技术:前沿算法与工业级部署方案揭秘 注:以上图片来自网络 1. OCR技术背景 1.1 OCR技术的应用场景 OCR是什么 OCR(Optical Character Recogniti ...

  10. SpringCloud-01-Eureka Ribbon

    1.微服务技术 2.SpringCloud SpringCloud是目前国内使用最广泛的微服务框架.官网地址:https://spring.io/projects/spring-cloud. Spri ...