【Vue全家桶】声明式编程、MVVM
迪丽瓦拉
2025-05-30 18:37:30
0次

【Vue全家桶】声明式编程、MVVM

文章目录

  • 【Vue全家桶】声明式编程、MVVM
  • 写在前面
  • 一、声明式编程与命令式编程
    • 1.1 原生方法实现
    • 1.2 Vue实现
    • 1.3 声明式和命令式编程
  • 二、MVVM、MVC的区别
    • 2.1 MVC
    • 2.2 MVVM

写在前面

这里是前端程序员小张🫡

创作不易,希望各位大佬支持一下🌟

一、声明式编程与命令式编程

1.1 原生方法实现

计数器原生实现:

// 1.获取对应的dom
const counterEl = document.querySelector(".counter")
const addBtn = document.querySelector(".add")
const subBtn = document.querySelector(".sub")// 2.定义变量记录数据
let counter = 0
counterEl.textContent = counter// 3.监听按钮的点击
addBtn.onclick = function () {counter++counterEl.textContent = counter
}subBtn.onclick = function () {counter--counterEl.textContent = counter
}

1.2 Vue实现

Vue实现:

当前数字:{{counter}}

const app = Vue.createApp({data: function () {return {counter: 0}},methods: {add: function () {this.counter++},sub: function () {this.counter--}}
}).mount("#app")

1.3 声明式和命令式编程

  • 原生开发和Vue开发的模式和特点,我们会发现是完全不同的,这里其实涉及到两种不同的编程范式:
    • 命令式编程和声明式编程;
    • 命令式编程关注的是 “how to do”自己完成整个how的过程;
    • 声明式编程关注的是 “what to do”,由框架完成 “how”的过程;
  • 在原生的实现过程中,我们是如何操作的呢?
    • 我们每完成一个操作,都需要通过JavaScript编写一条代码,来给浏览器一个指令;
    • 这样的编写代码的过程,我们称之为命令式编程;
    • 在早期的原生JavaScript和jQuery开发的过程中,我们都是通过这种命令式的方式在编写代码的;
  • 在Vue的实现过程中,我们是如何操作的呢?
    • 我们会在createApp传入的对象中声明需要的内容,模板template、数据data、方法methods;
    • 这样的编写代码的过程,我们称之为是声明式编程;
    • 目前Vue、React、Angular、小程序的编程模式,我们称之为声明式编程;

二、MVVM、MVC的区别

MVC、MVP 和 MVVM 是三种常见的软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化开发效率。

在开发单页面应用时,往往一个路由页面对应了一个脚本文件,所有的页面逻辑都在一个脚本文件里。页面的渲染、数据的获取,对用户事件的响应所有的应用逻辑都混合在一起,这样在开发简单项目时,可能看不出什么问题,如果项目变得复杂,那么整个文件就会变得冗长、混乱,这样对项目开发和后期的项目维护是非常不利的。

2.1 MVC

  • MVC 通过分离 Model、View 和 Controller 的方式来组织代码结构。
  • 其中 View 负责页面的显示逻辑,Model 负责存储页面的业务数据,以及对相应数据的操作。
  • 并且 View 和 Model 应用了观察者模式,当 Model 层发生改变的时候它会通知有关 View 层更新页面。
  • Controller 层是 View 层和 Model 层的纽带,它主要负责用户与应用的响应操作,当用户与页面产生交互的时候,Controller 中的事件触发器就开始工作了,通过调用 Model 层,来完成对 Model 的修改,然后 Model 层再去通知 View 层更新

在这里插入图片描述

2.2 MVVM

MVVM 分为 Model、View、ViewModel:

  • Model代表数据模型,数据和业务逻辑都在Model层中定义;
  • View代表UI视图,负责数据的展示;
  • ViewModel负责监听Model中数据的改变并且控制视图的更新,处理用户交互操作;

Model和View并无直接关联,而是通过ViewModel来进行联系的,Model和ViewModel之间有着双向数据绑定的联系。因此当Model中的数据改变时会触发View层的刷新,View中由于用户交互操作而改变的数据也会在Model中同步。

这种模式实现了 Model和View的数据自动同步,因此开发者只需要专注于数据的维护操作即可,而不需要自己操作DOM。
在这里插入图片描述

相关内容

热门资讯

AI做攻略、“双向奔赴”……国... 本文转自:人民网人民网记者 许维娜今年国庆假期,AI(人工智能)成了不少年轻人的“旅行搭子”。行前做...
合肥的这个“梗”, 翻篇了 社交平台的评论区,曾长期流传一句专属于合肥的黑色幽默。有人问合肥哪里好玩,本地网友半开玩笑地回复:合...
7万+旅游中高层都在的群,今天... 做旅游这行,资源卡位、渠道互通、项目落地——往往就差一个“对的机会”。我们的行业社群已聚集70,00...
一场帐篷音乐节,如何让井研从“... 帐篷音乐节现场封面新闻记者 周洪攀10月的研溪湿地,晚风里裹着柑橘的清甜与民谣的回响。夜幕降临,10...
白鹤翩翩落星愿,上海迪士尼度假... 10月9日,世界候鸟日前夕,上海迪士尼度假区星愿公园的湖风里多了一分白鹤的灵动。三座白鹤雕塑正式揭幕...
成都锦江边赏初秋枫叶飘飘 目前,成都锦江边国华街枫叶树红了。近年来,国华街附近的几条街都栽种了红枫树,是城区较集中看枫叶的点位...
GBTA:商务旅行正在复苏,但... 亚太正在成为全球商务旅行增长的重要引擎。在经历疫情后的快速反弹之后,全球商务旅行正在进入一个新的增长...
从景区焕新到节赛引流 邹城双节... 齐鲁网·闪电新闻10月9日讯 中秋、国庆“双节”假期,邹城市文化和旅游局提前谋划、周密部署,立足自身...
江山如此多娇 且看石楼今朝 金秋十月,黄河岸畔秋意盎然,丰收盛会喜迎国庆。本次石楼国庆文旅活动以“江山如此多娇,且看石楼今朝”为...
海南国庆假期接待游客475.4... 2026年国庆假期,海南接待游客475.40万人次,较2025年增长13.1%,较2024年增长15...