热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MVVN设计模式

一、MVVM设计模式三部分采用MVVM设计模式,对前端代码重新划分为3部分。1.界面View包含HTMLCSS,且HTML还是增强版a.HTML

一、MVVM设计模式三部分

采用MVVM设计模式,对前端代码重新划分为3部分。


1.界面View

包含HTML+CSS,且 HTML还是增强版

a.HTML中支持变量!不需要js,只要程序中变量值变化,界面中显示自动变化!.

b.HTML中支持分支和循环


2.模型对象Model

专门负责替界面保存所需的所有变量和函数。.


3.视图模型ViewModel

专门负责将模型对象中的变量值和函数配送到界面中。并且自动保持界面显示和程序中的变量一致


二、vue如何实现MVVM设计模式:Vue的绑定原理

在这里插入图片描述


(1)创建new Vue({})对象:引入Model

将data对象和 methods对象,引入到new Vue()对象内


a.针对data对象中的变量


  • 自动为data对象中每个变量都请了一对儿保镖——访问器属性。访问器属性,直接隶属于new Vue()
    例如,图中data中有n,然后在new Vue中,把n隐藏在data中_n,添加了访问器属性get n(){ return this._n }set n(value) { this._n = value; }

  • 悄悄的在每个变量的set()访问器函数中,添加了一个通知函数
    set n(value) { this._n = value; 通知函数() }


b.针对methods 中的函数

1)methods 对象被打散为多个函数,再分别加入new Vue()中。

结果:原来包含在methods 内部的所有函数,都直接隶属于newVue()。都和为data中变量请的保镖——访问器属性平级了!

2)所以,methods 中的函数只要想访问data 中的变量,都要加 this.



DOM和 jq中:事件处理函数中 this ->当前正在触发事件的DOM元素对象.

VUE中的this都指当前vue对象或当前组件对象。


(2)扫描界面中所有元素,创建一棵简化版的虚拟DOM树

虚拟DOM树:只保存可能发生变化的元素的简化版DOM树.

1)当首次加载界面时,new Vue()对象会遍历/扫描原始DOM树。

2)new Vue()只将可能发生变化的元素对象保存进虚拟DOM树中

步骤:


  1. 当在任何位置修改了data 中的变量值(访问器属性),都会自动调用访问器属性的set函数,都会自动调用通知函数()

  2. 通知函数会通知虚拟DOM树,某个变量发生了改变

  3. 虚拟DOM树会立刻遍历自己内部所有可能发生变化的元素,只找到受当前这个变量影响的个别元素

  4. 已经封装好的原生的DOM操作,自动修改界面中真实的DOM元素,显示变量的新值


总结:访问器属性+虚拟DOM树


虚拟DOM树的优点


  1. 体积小
  2. 遍历查找快
  3. 便面重复编码,提前封装增删改查操作
  4. 更新效率高,只更新受影响的元素

推荐阅读
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • React基础篇一 - JSX语法扩展与使用
    本文介绍了React基础篇一中的JSX语法扩展与使用。JSX是一种JavaScript的语法扩展,用于描述React中的用户界面。文章详细介绍了在JSX中使用表达式的方法,并给出了一个示例代码。最后,提到了JSX在编译后会被转化为普通的JavaScript对象。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
author-avatar
L的日记727248401
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有