IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 学习心得:对MVVM模式的理解 -> 正文阅读

[JavaScript知识库]学习心得:对MVVM模式的理解

对MVVM模式的理解

介绍

MVVM是一种简化用户界面的实践驱动编程方式。在当前主流的前后端分离的开发模式中,MVVM模式的优越性日益体现,相较于经典的MVC模式,其对于程序模块的封装很好地解决了前后端信息交互的冗余和繁琐。

MVVM源于经典的MVC。MVVM的核心是View Model层,负责转换Model中数据对象来让数据更加容易管理和使用,其作用如下:

  • 该层向上与视图层进行双向数据绑定
  • 向下与Model层通过接口请求进行数据交互
    在这里插入图片描述
    (图片来源于网络)
    MVVM已经相当成熟了,当下流行的MVVM框架有Vue.js,Angularjs等。

为什么要使用MVVM

MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大好处:

  • 低耦合:试图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候,可随时监听。
  • 可复用:我们可以把一些视图逻辑放在一个ViewModel里面,让很多View重用这段视图逻辑
  • 独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。两者之间的错综复杂的关系可以凭借MVVM变得简单,在团队开发过程中也能减少争论
  • 可测试:测试可以针对ViewModel来写,可以自己设置虚拟接口,对其进行接口测试。

MVVM的组成部分


(图片来源于网络)

View

View是视图层,也就是用户界面。前端主要由HTML和CSS构建,各大MVVM框架如:Vue.js,AngularJS,EJS等都有自己用来构建用户界面的内置模板语言。

Model

Model是指数据模型,泛指后端进行的各种业务逻辑处理和数据操纵,主要围绕数据库系统展开。这里的难点主要在于需要和前端约定统一的接口规则
ViewModel:

ViewModel是由前端开发人员组织生成和维护的视图数据层。在这一层,前端开发者对从后端获取的Model数据进行转换处理,做二次封装,以生成符合View层使用预期的试图数据模型。

需要注意的是ViewModel所封装出来的数据模型包括视图的状态和行为两部分,而Model层的数据模型是只包含状态的。

  • 比如页面这一块展示什么,那一块展示什么这些都属于视图状态
  • 页面加载进来时发生什么,点击这一块发生什么,这一块滚动时发生什么这些都属于视图行为(交互)

双向绑定:ViewModel可以完整去描述View层,View层的内容也会实时展示在ViewModel层中。

View层展现的不是Model层的数据,而是viewModel的数据,由ViewModel负责与Model层交互,这就完全耦合了View层和Model层,这个解耦是至关重要的,它是前后端分离方案实施的重要一环。

MVVM模式的实现者—Vue
  • Model:模型层,在这里表示JavaScript对象
  • View:视图层,在这里表示DOM(HTML操作的元素)
  • ViewModel:连接视图和数据的中间件,Vue.js就是MVVM中的ViewModel层的实现者

在MVVM架构中,是不允许数据和视图直接通信的,只能通过ViewModel来通信,而ViewModel就是定义了一个Observer观察者。

  • ViewModel能够观察到数据的变化,并对视图对应的内容进行更新
  • ViewModel能够监听到视图的变化,并能够通知数据发生改变

因此Vue.js就是一个MVVM的实现者,他的核心就是实现了DOM监听数据绑定
相较于其他的前端框架,我个人当前更加推崇Vue,原因之一是我还是个刚掌握前端的小菜鸡,相较于React,Vue更加容易上手。但是主要原因还是Vue太强大了,真滴香~

我眼中Vue的优势
-首先当然是Vue是一个MVVM框架,数据双向绑定,视图和数据能够同时变化,在交互方面优势极大。
-移动端开发很方便!!(虽然我还没有用React),用uni-app开发移动端程序和用Vue开发Web几乎没有任何区别。
-Vue继承了模块化,使用的是DOM模板,这让代码的复用性和操作性得到很大的提升
-Vue在尤雨溪创造之后,团队不断壮大,Vue事实更新,社区活跃
-Vue容易上手!

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-02 14:34:58  更:2021-10-02 14:36:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 3:59:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计