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

MVC与MVVM

MVC与MVVM举例说明

  • MVC
  • MVVM
  • 两者比较

MVC

<!DOCTYPE html>
<html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>mvc案例</title><link rel="stylesheet" href="">
</head><body><!-- 举一个例子,页面有一个 id 为 container 的 span,点击按钮会让其内容加 1 --><div><span id="container">0</span><button id="btn">+</button></div>
</body>
<script type="text/javascript">
function add(node) {// 业务逻辑处理const currentValue = parseInt(node.innerText);const newValue = currentValue + 1;// 更新视图node.innerText = newValue;
}
const button = document.getElementById('btn');
// 响应视图指令
button.addEventListener('click', () => {const container = document.getElementById('container');// 调用模型add(container);
}, false);
</script></html>

div部分是view(也就是我们常说的DOM)
监听click事件 是controller
add方法是model 会将结果渲染到view上

由此可见mvc是单向的。就好比学生去食堂打饭,说 我要吃土豆丝,那么打饭的阿姨就会盛一点土豆丝给该学生吃 。
mvc单向操作

MVVM

<!DOCTYPE html>
<html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>mvvm讲解应用</title><link rel="stylesheet" href=""><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head><body><div id="user"><h1>今天学习 {{ content }}</h1>mvvm如何实现数据双向绑定:<input type="text" v-model="message"></input></div><script type="text/javascript">const vm = new Vue({el: '#user',data: {content: 'MVVM模型哦',message: '修改操作'}})</script>
</body></html>

{{}}、v-bind、v-model三者区别
{{}} 从data中取对应的值;插值经常用在标签之间需要改变的html内容上

v-model与v-bind区别:

1、v-bind是单向绑定,用来绑定数据和属性以及表达式,只能将vue中的数据同步到页面。即M->V

2、v-model是双向绑定,不只能将vue中的数据同步到页面,而且可以将用户数据的数据赋值给vue中的属性。即V<==>VM

3、v-bind可以给任何属性赋值,v-model只能给具备value属性的元素进行数据双向绑定。

mvvm

在这里插入图片描述
注意 修改后的model也会改变 mvc模式则不会
在这里插入图片描述

两者比较

mvc 和 mvvm 其实区别并不大。都是一种设计思想,主要区别如下:1.mvc 中 Controller演变成 mvvm 中的 viewModel2.mvvm 通过数据来驱动视图层的显示而不是节点操作。3.mvc中Model和View是可以直接打交道的,造成Model层和View层之间的耦合度高。而mvvm中Model和View不直接交互,而是通过中间桥梁ViewModel来同步4.mvvm主要解决了:mvc中大量的DOM 操作使页面渲染性能降低,加载速度变慢,影响用户体验

请不要私自转载 谢谢

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

相关文章:

  • Cortex-M0异常和中断
  • 数据库(6)--存储过程
  • c++ 指针、引用和常量
  • 1、HAL库UART 中断|DMA 自动回显接收数据
  • NPOI - ConditionalFormattingRule
  • JavaのString类这一篇就够了(包含StringBuffer_Builder)
  • C# dataGridView 导出表格 xls NPOI 2.4.1 版本
  • 秒杀项目的消息推送
  • 最近开发及 vue3 几个小总结
  • 代谢组学分享-花青素通过调节氨基酸代谢改善糖尿病肾病的肾功能
  • 超简单!pytorch入门教程:Tensor
  • 如何使用COCO数据集,注意事项
  • 金三银四跳槽季,JAVA面试撸题就来【笑小枫】微信小程序吧~
  • 分享115个HTML电子商务模板,总有一款适合您
  • Python 字符串
  • 总线定义,车载总线:车载etherNet or CAN
  • Python(for和while)循环嵌套及用法
  • 6万字电力行业系统解决方案光伏电站综合安防系统解决方案
  • [Android Studio]Android 数据存储--SQLite数据库存储
  • 学校节能降耗减排方案——能耗监管平台的建设及效果剖析
  • 探索IP地址的应用
  • 点赞破万!阿里面试官总结的2022最新1685页Java面试宝典太全了
  • 项目搭建规范
  • 8.Docker Machine
  • 如何配合使用ESLINT 和 PRETTIER
  • 学英语的优势已来,抓住这个机会
  • 基于微信小程序云开发实现考研题库小程序项目(完整版)
  • AI一点通:使用 ColumnTransformer 转换 Pandas DataFrame 的一个或多个列
  • 【C语言】全局变量、局部变量和静态变量的区别
  • 血氧仪「上潜」,智能穿戴「下沉」