当前位置: 首页 > news >正文

博客摘录「 mvvm框架工作原理及优缺」2023年7月31日

mvvm 的核心是数据劫持、数据代理、数据编译和"发布订阅模式"。

1、数据劫持——就是给对象属性添加get,set钩子函数。

● 1、观察对象,给对象增加 Object.defineProperty

● 2、vue的特点就是新增不存在的属性不会给该属性添加 get 、 set 钩子函数。

● 3、深度响应。循环递归遍历 data 的属性,给属性添加 get , set 钩子函数。

● 4、每次赋予一个新对象时(即调用 set 钩子函数时),会给这个新对象进行数据劫持( defineProperty )

2、数据代理  将 data , methods , compted 上的数据挂载到vm实例上。让我们不用每次获取数据时,都通过 mvvm._data.a.b 这种方式,而可以直接通过 mvvm.b.a 来获取

3、数据编译把 {{}} , v-model , v-html , v-on ,里面的对应的变量用data里面的数据进行替换。

4、发布订阅发布订阅主要靠的是数组关系,订阅就是放入函数(就是将订阅者添加到订阅队列中),发布就是让数组里的函数执行(在数据发生改变的时候,通知订阅者执行相应的操作)。消息的发布和订阅是在观察者的数据绑定中进行数据的——在get钩子函数被调用时进行数据的订阅(在数据编译时通过 new Watcher() 来对数据进行订阅),在set钩子函数被调用时进行数据的发布

http://www.lryc.cn/news/106242.html

相关文章:

  • 第12章 Linux 实操篇-Linux磁盘分区、挂载
  • 使用express搭建后端服务
  • 深度学习——划分自定义数据集
  • Jmeter性能测试之正则表达式提取器
  • 浅谈Kubernetes中Service网络实现(服务发现)
  • 【重造轮子】golang实现可重入锁
  • torch显存分析——对生成模型清除显存
  • electron+vue+ts窗口间通信
  • 基于Fringe-Projection环形投影技术的人脸三维形状提取算法matlab仿真
  • 如何使用Webman框架实现多语言支持和国际化功能?
  • 接受平庸,特别是程序员
  • HTML兼容性
  • Java日期和时间处理入门指南
  • anndata k折交叉
  • 深入解析项目管理中的用户流程图
  • Vue使用QrcodeVue生成二维码并下载
  • “用户登录”测试用例总结
  • 适应于Linux系统的三种安装包格式 .tar.gz、.deb、rpm
  • Linux lvs负载均衡
  • Tomcat 创建https
  • 超导电性的基本现象和相关理论
  • 在 PHP 中单引号(‘ ‘)和双引号(“ “)用法的区别
  • SpringCloudAlibaba:服务网关之Gateway的cors跨域问题
  • react中的高阶组件理解与使用
  • “从零开始学习Spring Boot:构建高效的Java应用程序“
  • 容器部署jenkins定时构建于本地时间不一致
  • 生成指定网段的IP字典自动化脚本
  • Java版工程行业管理系统源码-专业的工程管理软件- 工程项目各模块及其功能点清单 em
  • 《向量数据库指南》——大模型时代,为什么向量数据库成为标配?
  • Pytorch个人学习记录总结 10