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

Vue——认识day02

        此处接上一篇文章Vue——初识Vue开始,欢迎大家。

目录

1.MVVM模型

2.Object.defineproperty方法

3.数据代理简介

4.Vue中的数据代理

总结



1.MVVM模型

        MVVM模型是一种软件架构模式,用于将用户界面(View),业务逻辑(Model)和视图模型(ViewModel)之间的关系解耦。MVVM的目标是实现用户界面的可复用性和可维护性。

        在MVVM模型中,用户界面(View)负责显示数据和接收用户操作。它通过数据绑定与视图模型(ViewModel)进行交互,以获取和更新数据。视图模型(ViewModel)是用户界面(View)的抽象,它包含了与用户界面相关的业务逻辑和数据。视图模型通过数据绑定从模型(Model)中获取数据,并将数据在用户界面上进行展示。

        模型(Model)是业务数据和业务逻辑的抽象。它负责数据的获取和存储,并包含了与数据相关的操作和验证逻辑。模型可以与外部数据源(例如数据库或网络)进行交互。

        MVVM模型的核心概念是数据绑定,它将数据和用户界面之间的关系自动化。数据绑定允许视图模型将数据绑定到视图上,并且在数据发生变化时自动更新视图。这种自动更新减少了开发人员的工作量,并提高了用户界面的可维护性。

        总结来说,data中的所有属性,最后都会交给vm。vm中的所有属性(包括vue自带的)在vue模版(view)中都可以直接使用。


2.Object.defineproperty方法

        具体讲解都放置于代码注释之中了。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>介绍Object.defineproperty方法</title></head>
<body><script type="text/javascript">let number = 20let person = {name:'WJJ',// 这样写就可以遍历// age:20,sex:'女'}
// 参数解析:第一个参数是 要定义属性的对象。
//          第二个参数是 要定义或修改的属性的名称
//          第三个属性是一个对象,里面写一些(配置)属性// 1.使用这中方法添加的属性不参与枚举// 2.使用这种方法添加的属性在页面无法修改// 3.使用这种方法添加的属性在页面无法被删除Object.defineProperty(person,'age',{// //value:18,// value:number,// // 开启这个为true,就可以让这个添加的属性加入枚举// enumerable:true,// // 开启这个为true,就可以让这个添加的属性在页面可修改// writable:true,// // 开启这个为true,就可以让这个添加的属性在页面可删除// configurable:true,// 当有人读取person中的age的数据时// get函数(getter)就会被调用,且返回值就是age的值get(){return number},// 当有人修改person中的age的数据时// set函数(setter)就会被调用,且会收到修改后的值set(value){number = valueconsole.log('修改成功:',value)}})console.log(person)// 这里就可以发现并没有找到age这个属性console.log(Object.keys(person))for(let key in person){console.log('值的数据为:',person[key])}</script>
</body>
</html>


3.数据代理简介

        数据代理:通过一个对象代理对另一个对象中属性的操作(读、写)

如下示例代码所示:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>什么是数据代理</title>
</head>
<body><script type="text/javascript">// 数据代理:通过一个对象代理对// 另一个对象中属性的操作(读、写)let obj = {a:100}let objP = {b:200}Object.defineProperty(objP,'a',{get(){return obj.a},set(value){obj.a = value}})</script></body>
</html>

4.Vue中的数据代理

        在Vue中,数据代理是指将data对象中的所有属性代理到Vue实例上,使得我们可以通过实例访问到data对象中的属性。

        Vue实例的data选项中定义的属性会被Vue代理到实例上,这样我们可以直接通过实例访问这些属性,而不需要通过data对象来访问。这样做的好处是可以简化代码,提高代码的可读性和可维护性。

        通过数据代理,我们可以在Vue实例中直接访问data中的属性,而无需使用this.data来访问。例如,如果在data中定义了一个属性name,我们可以直接通过this.name来访问该属性。

        当我们在Vue实例中访问data中的属性时,Vue会自动进行数据劫持,即在访问属性时会触发get拦截器,从而实现属性的响应式。

        需要注意的是,Vue只会对data中已经存在的属性进行代理,而不会代理动态添加的属性。如果需要代理动态添加的属性,可以使用Vue.set或this.$set方法。

下面是一个简单的示例:

var vm = new Vue({el: '#app',data: {message: 'Hello Vue!'}
});console.log(vm.message); // 输出:Hello Vue!

        在上述示例中,我们将data对象中的属性message代理到了Vue实例vm上,可以直接通过vm.message访问该属性。

        下面的来自尚硅谷的图示:

总结

一个字较为ez,祝大家学习愉快!!!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 力扣刷题--2185. 统计包含给定前缀的字符串【简单】
  • 虚幻引擎UE5入坑记
  • 2024Android面试题与答案(2)
  • 三种tcp并发服务器实现程序
  • 【C#】【EXCEL】Bumblebee/Components/Analysis/GH_Ex_Ana_CondBetween.cs
  • WPF—资源的使用
  • 速盾:整站加速和cdn的关系是怎样的?
  • 设置视图的宽高
  • day35-测试之性能测试JMeter的测试报告、并发数计算和性能监控
  • 数据结构,顺序表和单向链表(一对一)
  • maven引用项目内的jar包
  • Unity3D 屏幕适配详解
  • 【Sceneform-EQR】通过filament(gltfio)加载gltf模型动画(Filament使用Animator)
  • 【一起学Rust | 框架篇 | Tauri2.0框架】rust和前端的相互调用(前端调用rust)
  • ElasticSearch7.12.1详细安装
  • Iterator 和 for...of 循环
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Java编程基础24——递归练习
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • quasar-framework cnodejs社区
  • Ruby 2.x 源代码分析:扩展 概述
  • SpiderData 2019年2月23日 DApp数据排行榜
  • vagrant 添加本地 box 安装 laravel homestead
  • 浮动相关
  • 关于extract.autodesk.io的一些说明
  • 开发基于以太坊智能合约的DApp
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前端临床手札——文件上传
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 项目管理碎碎念系列之一:干系人管理
  • 消息队列系列二(IOT中消息队列的应用)
  • 阿里云ACE认证之理解CDN技术
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​低代码平台的核心价值与优势
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # 透过事物看本质的能力怎么培养?
  • #QT项目实战(天气预报)
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (9)STL算法之逆转旋转
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (一)RocketMQ初步认识
  • (转)使用VMware vSphere标准交换机设置网络连接
  • ./configure,make,make install的作用(转)
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .Net FrameWork总结
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .NET中GET与SET的用法
  • // an array of int
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @RequestMapping 的作用是什么?
  • [AIGC] Spring Interceptor 拦截器详解