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

深圳市网站建设公司昆明seo外包

深圳市网站建设公司,昆明seo外包,网络游戏排行榜2021前十名手游,css网页模板下载一、MVC mvc&#xff1a;是一种代码架构设计模式&#xff0c;前端中的mvc最主要的作用就是将视图和数据模型进行分离 &#xff08;1&#xff09; 为什么需要 MVC 简单理解&#xff1a;也就是为什么需要将视图和数据模型进行分离 <select id"drinkSelect">&…

一、MVC

mvc:是一种代码架构设计模式,前端中的mvc最主要的作用就是将视图和数据模型进行分离

(1) 为什么需要 MVC

简单理解:也就是为什么需要将视图和数据模型进行分离

<select id="drinkSelect"><option value="coffee">coffee</option><option value="milk">milk</option><option value="juice">juice</option>
</select>
<p id="theColorOfDrink"></p><script type="text/javascript">document.getElementById('drinkSelect').onchange = function() {var colorvar colorOfDrink = {coffee: 'brown',milk: 'white',juice: 'orange'}color = colorOfDrink[this.value]document.getElementById('theColorOfDrink').innerHTML = color}
</script>

通过上面代码我们会发现视图的操作和数据以及逻辑的处理全部混淆在一起了,当前代码量小,并不会发现太大的问题,但是项目大,代码量多的时候,对于代码的维护会相对复杂,分离后具有如下优势

  • 维护性高 
  • 代码耦合性低 (相互联系较低)
  • 代码可复用

(2)如何设计MVC? 

mvc可以分为三个部分

  • 视图(View):用户界面。
  • 控制器(Controller):业务逻辑
  • 模型(Model):数据保存

V 视图层

页面结构

<select id="drinkSelect"><option value="coffee">coffee</option><option value="milk">milk</option><option value="juice">juice</option>
</select>
<p id="theColorOfDrink"></p>

dom 操作

showDrinkColor.view = {start: function() {// 获取select监听change事件document.getElementById('drinkSelect').onchange = this.onchange},onchange: function() {// 事件函数 做的逻辑 获取 变化后的数据传递给controllershowDrinkColor.set(document.getElementById('drinkSelect').value)},update: function() {document.getElementById('theColorOfDrink').innerHTML = showDrinkColor.model.getDrinkColor()}
}

M 数据层

数据和操作数据的逻辑:

showDrinkColor.model = {colorOfDrink: {coffee: 'brown',milk: 'white',juice: 'orange'},selectedDrink: null,setDrink: function(drinkName) {this.selectedDrink = this.colorOfDrink[this.selectedDrink]? drinkName: nullthis.onchange()},onchange: function() {showDrinkColor.view.update()},getDrinkColor: function() {return this.selectedDrink? this.colorOfDrink[this.selectedDrink]: 'white'}
}

C 控制层

视图和数据模型 进行关联

var showDrinkColor = {start: function() {// 给视图绑定事件this.view.start()},set: function(drinkName) {// 拿到视图传递过来的数据在调用数据模型的方法更新数据this.model.setDrink(drinkName)}
}
showDrinkColor.start()
  1. 视图发生变化触发 Controller,并且将数据传递给 Controller
  2. Controller 拿到更新的数据触发 model 并将更新的数据传递给 model
  3. model 拿到数据更新数据并且触发 view 视图更新

mvc通信方式流程

所有通信都是单向的。 

为了小伙伴们方便复制查看 合一个完整的

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body>mvc写法<select id="drinkSelect"><option value="coffee">coffee</option><option value="milk">milk</option><option value="juice">juice</option></select><p id="theColorOfDrink"></p><script>var showDrinkColor = {start: function () {// 给视图绑定事件this.view.start();},set: function (drinkName) {// 拿到视图传递过来的数据在调用数据模型的方法更新数据this.model.setDrink(drinkName);},};showDrinkColor.view = {start: function () {console.log('监听了');// 获取select监听change事件document.getElementById("drinkSelect").onchange = this.onchange;},onchange: function () {// 事件函数 做的逻辑 获取 变化后的数据传递给controllershowDrinkColor.set(document.getElementById("drinkSelect").value);},update: function () {document.getElementById("theColorOfDrink").innerHTML =showDrinkColor.model.getDrinkColor();},};showDrinkColor.model = {colorOfDrink: {coffee: "brown",milk: "white",juice: "orange",},selectedDrink: null,setDrink: function (drinkName) {this.selectedDrink = this.colorOfDrink[this.selectedDrink]? drinkName: null;this.onchange();},onchange: function () {showDrinkColor.view.update();},getDrinkColor: function () {return this.selectedDrink? this.colorOfDrink[this.selectedDrink]: "white";},};showDrinkColor.start();</script></body>
</html>

 二、MVVM

MVVM 是 Model-View-ViewModel 的简写。它本质上就是 MVC 的改进版,整体和 mvc 差不多,最大的区别就是mvc 是单向的,而 mvvm 是双向的,并且是自动的,也就是数据发生变化自动同步视图,视图发生变化自动同步数据,同时解决了 mvc 中大量的 DOM 操作使页面渲染性能降低,加载速度变慢,影响用户体验。和当 Model 频繁发生变化,开发者需要主动更新到 View

在这里插入图片描述

    耦合低,是真的低,view 和 model 完全分离

    维护性高,易维护,上手快

    双向绑定:视图发生变化数据自动同步,数据发生变化视图也自动同步

    减少了 dom 的操作,可以更多的关注业务逻辑

http://www.dtcms.com/wzjs/247038.html

相关文章:

  • 东莞商城网站建设公司流量宝
  • 商丘手机网站建设深圳企业网站制作公司
  • 盐城 网络推广重庆百度快照优化排名
  • 石家庄造价信息网上海知名的seo推广咨询
  • 企业 网站备案百度指数资讯指数是指什么
  • 网站seo教程网站流量统计分析报告
  • 义乌哪里有学做网站的企业站seo外包
  • 建设彩票网站网络营销成功的案例
  • 上海网站推广联盟360开户推广
  • 宁波网站建设果核界首网站优化公司
  • 尤溪县建设局网站合肥百度网站排名优化
  • 查建筑公司资质的网站免费b2b
  • 短链接生成站长工具百度上海总部
  • 手工业网站怎么做百度推广多少钱一个月
  • 做网站要具备些什么条件南京网络推广公司排名
  • 做网站创业流程图网络推广员招聘
  • 网站风格复制域名查询网站信息
  • qq官网登录入口电脑版搜狗seo怎么做
  • 彩票系统开发搭建彩票网站服务器安全怎么做苏州网站seo服务
  • 建设网站图片素材人工智能培训一般多少钱
  • 做医美设计的网站运营培训班有用吗
  • 用织梦做房产网站店铺推广怎么做
  • 昆明做网站首选互维厦门百度开户
  • 一个专门做字画的网站九幺seo优化神器
  • 网站建设模板型和定制型免费软文推广平台
  • 做网站需要多少屏搜索引擎排名2022
  • 成都大型网站建设全球搜索网站排名
  • 莱州 网站制作网络营销推广方案ppt
  • 自己如何建设企业网站广告网站大全
  • wordpress 搞笑网站百度店铺免费入驻