简单概述理解vue的MVVM模型

83 篇文章 14 订阅
订阅专栏
18 篇文章 3 订阅
订阅专栏

MVVM模型概述

MVVM:Model View ViewModel

  • M:模型(Model) :对应 data 中的数据
  • V:视图(View) :模板
  • VM:视图模型(ViewModel) : Vue 实例对象
    在这里插入图片描述
    它包括 DOM Listenters 和 Data bindings,前者实现了页面与数据的绑定,当页面操作数据的时候 DOM 和 Model 也会发生相应的变化。后者实现了数据与页面的绑定,当数据发生变化的时候会自动渲染页面。

为什么学习vue要学习MVVM模型

因为vue的设计就是参考了MVVM模型的启发,虽然不是完全一样,但是大致思路都是相似的

值值得注意的是,在没有vue之前,MVVM模型就已经存在了

在这里插入图片描述

编写代码理解vue的MVVM模型

我们编写一个简单例子

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>初始vue</title>
    <!-- 引入vue.js -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>

<body>
    <!-- 准备一个容器 -->
    <div id="root">
        <h1>学校名称:{{name}}</h1>
        <h1>学校地址:{{address}}</h1>
    </div>
    <script type="text/javascript">
        // 设置为 false 以阻止 vue 在启动时生成生产提示。
        Vue.config.productionTip = false
        const v=new Vue({
            el:'#root',
            data:{
                name:'清华大学',
                address:'北京'
            } 
        }) 
      

    </script>
</body>

</html>

其实div容器就是View,vue实例对象就是ViewModel,实例中的data就是Model
在这里插入图片描述
查看页面
在这里插入图片描述
我们尽量使用变量名称vm来接受vue实例
在这里插入图片描述
查看控制台,我们发现data中的两个属性以及进入到了vue实例中
在这里插入图片描述

扩展:vue的{}中还可以写什么

其实vm里面有的,我们都可以写
在这里插入图片描述
我们随便写一个测试下

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>初始vue</title>
    <!-- 引入vue.js -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>

<body>
    <!-- 准备一个容器 -->
    <div id="root">
        <h1>学校名称:{{name}}</h1>
        <h1>学校地址:{{address}}</h1>
        <h1>测试1{{1+1}}</h1>
        <h1>测试2{{_c}}</h1>
        <h1>测试3{{$options}}</h1>
    </div>
    <script type="text/javascript">
        // 设置为 false 以阻止 vue 在启动时生成生产提示。
        Vue.config.productionTip = false
        const vm=new Vue({
            el:'#root',
            data:{
                name:'清华大学',
                address:'北京'
            } 
        }) 
      console.log(vm)

    </script>
</body>

</html>

在这里插入图片描述
需要明白的是:我们data中的属性最终也是在vm中显示的,所以可以通过插值获取到,这其实是一个数据代理,那么既然vm中有的,我们都能获取到,写的时候不用vm.的方式获取,直接$就能获取

总结

MVVM模型

1 M:模型(Model):data中的数据
2 V:视图(View):模板数据
3 VM:视图模型(ViewModel):vue实例

观察发现

1 data中的所有属性,最后都出现在了vm身上
2 .vm身上所有的属性及vue原型上所有属性,在vue模板中都可以直接使用

数据视图模型前端框架vue-resouce源码 ajax请求必备
08-24
vue-resource.js vue中进行ajax请求this.$http.get().then()
vue实现简单MVVM框架
12-03
不知不觉接触前端的时间已经过去半年了,越来越发觉对知识的学习不应该只停留在会用的层面,这在我学jQuery的一段时间后便有这样的体会。 虽然jQuery只是一个JS的代码库,只要会一些JS的基本操作学习一两天就能很快掌握jQuery的基本语法并熟练使用,但是如果不了解jQUery库背后的实现原理,相信只要你一段时间不再使用jQuery的话就会把jQuery忘得一干二净,这也许就是知其然不知其所以然的后果。 最近在学vue的时候又再一次经历了这样的困惑,虽然能够比较熟练的掌握vue的基本使用,也能够对MV*模式、数据劫持、双向数据绑定、数据代理侃上两句。但是要是稍微深入一点就有点吃力了。所以这几
简述VueMVVM 模式
最新发布
04-23 908
MVVM 是 Model-View-ViewModel的缩写,即将数据模型与数据表现层通过数据驱动进行分离,从而只需要关系数据模型的开发,而不需要考虑页面的表现,具体说来如下:Model代表数据模型:主要用于定义数据和操作的业务逻辑。View代表页面展示组件(即dom展现形式):负责将数据模型转化成UI 展现出来。ViewModel为model和view之间的桥梁:监听模型数据的改变和控制视图行为、处理用户交互。通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的
vue中的mvvm模式讲解
12-10
学习了MVVM模式 起先还觉得有点难,后面与双向数据绑定链接起来还是很容易理解的。 那么什么是MVVM呢? 不明思议咋们肯定和我想的一样   每个单词的首写字母呗! 对没错就是它 Model-View-ViewModel。  可以实现我们的双向数据绑定 下面我来用我的理解解析下它们之间的关系: 哈哈 有点小尴尬哈 先来说下View与Model之间有联系吗? 在MVVM架构下,View 和 Model 之间其实并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立
VueMVVM实现方法
12-11
本文介绍了VueMVVM实现方法,分享给大家,具体如下: 1. Object.defineProperty() 定义属性 用意:给一个对象定义属性,那个属性原来是不存在的。这是一个初衷,属性是不存在的,需要额外添加。 ①、使用说明 Object.defineProperty(obj,props) 第一个参数是将被添加或者修改的属性的对象 第二个参数是一个对象,表示将要添加的一个或多个键值对一直要添加属性的具体配置 { ​ ‘属性名’:{value:’…’,writable:true}, ​ ‘属性名’:{value:’…’,writable:true} } ②、属性的getter和se
vue mvvm数据响应实现
01-18
为什么实现数据响应式 当前vue、react等框架流行。无论是vue、还是react框架大家最初的设计思路都是类似的。都是以数据驱动视图,数据优先。希望能够通过框架减少开发人员直接操作节点,让开发人员能够把更多的精力放在业务上而不是过多的放在操作节点上。另一方面,框架会通过虚拟dom及diff算法提高页面性能。这其中需要数据优先最根本的思路就是实现数据响应式。so,本次来看下如何基于原生实现数据响应式。 vue中的数据响应 vue中会根据数据将数据通过大胡子语法及指令渲染到视图上,这里我们以大胡子语法为例。如下: <div id=app> {{message}} </div>
简单理解vue中实例属性vm.$els
11-30
vue实例属性vm.$els到底是什么?有哪些需要注意的?具体请阅读本文。 不需要表达式 参数: id(必需) 用法: 为 DOM 元素注册一个索引,方便通过所属实例的 $els 访问这个元素。 注意: 因为 HTML 不区分大小写,camelCase 名字比如 v-el:someEl 将转为全小写。可以用 v-el:some-el 设置 this.$els.someEl。 我的理解:$els类似于document.querySelector(‘.class’)的功能,可以拿到指定的dom元素。 Eg: <div></div> var _dom = thi
vue——VM对象和基础指令
qq_56668869的博客
08-29 2252
vueVM对象和基础指令、插值表达式、文本指令、属性绑定
Vue中的vmVueComponent的实例对象
m0_50122836的博客
06-07 6247
大哥vm和他的小弟vc
Vue中的MVVM模型(通俗易懂版)
热门推荐
weixin_54614831的博客
08-18 1万+
一篇文章,让你完全弄明白MVVM模型
VUE基础知识二
xiongIT的博客
03-28 919
VUEMVVM模型介绍、Vue中的数据代理、定义事件的方法、事件修饰符的介绍
mvvm:剖析vue实现原理,简单实现mvvm
01-31
剖析Vue实现原理-如何实现双向绑定mvvm 将项目改造成基于webpack的实现 使用webpack打包 # npm install webpack webpack-dev-server webpack-merge --save-dev # npm run build ♡babel装载机 安装 # npm install ...
vue中的MVVM模型
helongzhi的博客
07-25 842
vue中的MVVM模型
理解VueMVVM模型
前端如逆水行舟...
05-06 419
MVVM M:模型(Model):对应data中的数据 V:视图(View):模板 VM:视图模型(View Model):Vue实例对象 Data Bindings:数据绑定的意思:数据存在model中,经过vm中的数据绑定呈现到页面的指定位置的过程。 DOM Listeners:dom监听,当页面数据改变的时候能够被监听到并存在数据中 ...
vueMVVM模型
The_Road_of_Java的博客
12-14 1170
M(Model):模型,对应的是vue模板语法中data中的数据。 V(View):视图,模板代码。 VM(ViewModel):视图模型,对应的是vue实例,因此我们一般用vm来接收实例。
Vue-MVVM模型
weixin_46480990的博客
06-02 141
假设,在页面中有一个输入框,我们想要我们的输入框输入后,data得到响应,他会同步出现在model中的data数据里。它的工作是你有没有在输入框输入,这个输入框有没有东西,输入的是什么,当全部监听到了后。我们通过Model里的data数据,将指定的内容通过ViewModel(实例对象Vue)的Data Bindings(数据绑定),绑定到指定的视图页面.我们以前几章中的输入框(input)为例,讲讲DOM Listeners。9.我们以这个为例,其意义是探究vm中的内容能不能在模板中使用,暂不追究其他。
Vue.js vm对象详解
Andrew_SJ的博客
05-25 1421
转载自:@大自然的流风 原文链接:https://www.cnblogs.com/zdz8207/p/vue-vm-viewmodel.html vue数据是怎么驱动视图的? 一堆数据放在那里是不会有任何作用的,它必须通过我们的View Model(视图模型)才能操控视图。 图中的model其实就是数据,一般我们写成js对象的格式; 中间的这个所谓View Model,就是 var vm = new Vue({ el: ‘#app’, data: { message: ‘Hello Vue!’ } })
Vue学习】Vue原理—MVVM模式
zx1041561837的博客
02-27 1586
本文介绍了Vue框架的原理。具体包括:1. 介绍了MVVM模式,2. Vue响应式机制,3. Vue监听对象的过程,4. Vue监听数组的实现,5. 使用Object.defineProperty监听数据存在的缺点。
vue源码阅读---vm实例上的属性
csdnWhyTrouble的博客
08-21 1180
vnode.$slot:组件实例里插槽的内容;组价开始标签和组件结束标签里包裹的内容;vnode.children:普通元素组件的子节点;vnode.componentInstacne:指向组件vnode的实例;在子组件实例化时,会有一个const child = vnode.componentInstance = createComponentInstanceForVnode;所以组件vnode的componentInsatcne就有值了。
vue mvvm模型
07-27
Vue 是一种流行的 JavaScript 框架,它基于 MVVM(Model-View-ViewModel)模式。...总结来说,VueMVVM 模型通过数据绑定机制实现了视图和数据的自动同步,提供了一种简洁、高效的方式来构建交互式的用户界面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 解决vite不是内部或外部命令,也不是可运行的程序 或批处理文件。 84960
  • js请求路径控制台报错 Failed to launch ‘xxx‘ because the scheme does not have a registered handler. 41398
  • IDEA 关闭/开启引用提示Usages 35493
  • JSON parse error: Cannot deserialize instance of `java.util.ArrayList 34078
  • dbeaver一些基本操作和设置(含有设置背景豆沙绿护眼模式) 29241

分类专栏

  • Java 142篇
  • 程序人生 3篇
  • 大数据 5篇
  • Python 1篇
  • Windows设置 3篇
  • ui组件库 11篇
  • 代理 1篇
  • SpringCloudAlibaba 4篇
  • Vscode 18篇
  • Mybatis MybatisPlus 17篇
  • 附件 10篇
  • 工具包 2篇
  • 软件工具 7篇
  • 多线程 12篇
  • JSON 9篇
  • 个人学习笔记 6篇
  • Activiti 6篇
  • 爬虫 1篇
  • Git 8篇
  • Vue 83篇
  • RoekctMQ 1篇
  • Redis 5篇
  • ElasticSearch 4篇
  • RabbitMQ 3篇
  • SpringBoot 46篇
  • 前端(Web) 44篇
  • 报错 39篇
  • 常用开发工具设置以及小技巧 35篇
  • 其他 16篇
  • 第三方api(sdk) 8篇
  • Jsp 11篇
  • Html 12篇
  • 数据库 20篇

最新评论

  • 零代码工具推荐 八爪鱼采集器

    八爪鱼大数据: 写得非常好!!想邀请您成为我们的联盟伙伴,感兴趣可以直接私信我表情包

  • 解决vite不是内部或外部命令,也不是可运行的程序 或批处理文件。

    m0_74861341: 解决了,博主nb

  • 就业寒潮,三年Java——《我亲身经历的2022年软件质量工作》

    阿J~: 干货满满,很详细,评论占个坑!

  • vue使用axios发送post请求携带json body参数,后端使用@RequestBody进行接收

    :-): 为什么我的后端得到的数据对象是null啊

  • 解决vite不是内部或外部命令,也不是可运行的程序 或批处理文件。

    听军一席话: 大哥表情包

大家在看

  • Golang | Leetcode Golang题解之第165题比较版本号
  • C++ | Leetcode C++题解之第164题最大间距 147
  • Java | Leetcode Java题解之第165题比较版本号
  • Golang | Leetcode Golang题解之第164题最大间距 173
  • Golang | Leetcode Golang题解之第166题分数到小数

最新文章

  • mybatis新增到数据库后返回当前ID
  • mybatis日期格式错误:IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
  • minio客户端基本操作
2024年2篇
2023年111篇
2022年102篇
2021年102篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小花皮猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司和田SEO按天扣费普洱网站建设设计报价张家界至尊标王哪家好朝阳至尊标王公司延安seo报价泰安营销型网站建设价格黔南网站关键词优化报价丹东网站搜索优化推荐怀化百度爱采购襄阳SEO按天计费报价绍兴外贸网站建设价格眉山seo排名多少钱坑梓网站优化排名公司徐州英文网站建设价格宝鸡网站优化软件公司白城英文网站建设哪家好思茅seo网站优化价格兰州网站排名优化公司鹤壁网站建设设计报价伊春seo优化阿坝网站优化推广价格果洛建站哪家好长春网站建设设计推荐长沙网站优化推广多少钱黔西南营销网站鄂州SEO按天收费推荐广元推广网站多少钱新余百度竞价朔州关键词排名包年推广哪家好大浪关键词排名包年推广推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化