news 2026/5/8 11:29:39

【Vue】07 Vue技术——Vue 中的 MVVM 模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Vue】07 Vue技术——Vue 中的 MVVM 模型

前言

在现代前端开发中,MVVM(Model-View-ViewModel)架构模式已成为构建数据驱动应用的核心思想。Vue.js 正是基于这一理念设计的渐进式 JavaScript 框架。本文将通过一个完整的示例,结合代码、控制台输出与可视化图解,深入剖析 MVVM 模型的三大核心组件:M(Model)、V(View)、VM(ViewModel),并揭示它们之间的运行机制。

官网文档:https://cn.vuejs.org/guide/essentials/forms.html


一、什么是 MVVM 模型?

MVVM 是一种软件架构模式,旨在实现视图与数据的解耦,让开发者可以专注于业务逻辑而无需手动操作 DOM。其结构如下:

组件含义
M (Model)数据层,对应data中的数据对象
V (View)视图层,即 HTML 模板代码
VM (ViewModel)核心桥梁,由 Vue 实例创建,负责连接 Model 和 View

💡 简单来说:

  • Model → ViewModel:数据变化触发视图更新
  • View → ViewModel:用户交互事件被监听并处理
  • ViewModel:自动同步数据与界面,实现双向绑定

DOM(Document Object Model,文档对象模型) 是一种用于表示和操作 HTML 或 XML 文档的编程接口(API)。它将整个网页文档抽象为一个树形结构的对象模型,使得开发者可以通过 JavaScript 等脚本语言动态地访问、修改、添加或删除页面内容、结构和样式。


二、实战示例解析

我们来看一段基础的 Vue 代码,逐步分析 MVVM 的工作流程。

<!DOCTYPEhtml><html><head><metacharset="UTF-8"/><title>MVVM模型</title><!-- 引入Vue --><scripttype="text/javascript"src="../js/vue.js"></script></head><body><!-- 准备好一个容器 --><divid="root"><h1>学校名称:{{name}}</h1><h1>学校地址:{{address}}</h1><h1>测试一下1:{{1 + 1}}</h1><h1>测试一下2:{{abc}}</h1><h1>测试一下3:{{$options}}</h1><h1>测试一下3:{{$emit}}</h1><h1>测试一下3:{{_c}}</h1></div><scripttype="text/javascript">// 关闭生产环境提示Vue.config.productionTip=false;constvm=newVue({el:'#root',data:{name:'上高山',address:'长沙',abc:'123'}});console.log(vm);</script></body></html>

✅ 运行结果展示

打开浏览器后,页面显示如下内容:

学校名称:上高山 学校地址:长沙 测试一下1:2 测试一下2:123 测试一下3:{"components":{}, "directives":{}, ...} 测试一下3:function(event){...} 测试一下3:function(a,b,c,d){return createElement$1(...)}


三、MVVM 核心机制详解

1.Model(模型)—— data 中的数据

在 Vue 实例中,data对象就是Model 层。它包含了所有需要在视图中展示或使用的数据。

data:{name:'上高山',address:'长沙',abc:'123'}

这些数据会被 Vue 自动响应式化,任何修改都会通知视图进行更新。


2.View(视图)—— 模板代码

HTML 中使用{{ }}插值语法的部分就是View 层,它是用户看到的界面。

<h1>学校名称:{{name}}</h1><h1>学校地址:{{address}}</h1>

Vue 会将nameaddress的值从data中读取,并插入到对应的<h1>元素中。


3.ViewModel(视图模型)—— Vue 实例对象

const vm = new Vue({...})创建的实例就是ViewModel,它是整个 MVVM 的“大脑”。

🔍 重要发现:
  • data中的所有属性,最终都出现在了vm上;
  • vm身上的所有属性,以及 Vue 原型上的方法,在模板中都可以直接使用。

例如:

{{ $options }}<!-- 输出 options 配置 -->{{ $emit }}<!-- 输出 emit 方法 -->{{ _c }}<!-- 输出内部createElement函数 -->

这些属性和方法来自 Vue 的原型链,是 Vue 提供的内置工具。


四、关键观察与结论

通过调试工具查看console.log(vm),我们可以看到:

{name:"上高山",address:"长沙",abc:"123",_data:{...},_events:{...},$options:{...},$emit:function(),_c:function()}

✅ 观察总结:

发现解释
data属性都在vmVue 将data中的每个属性代理到实例上,方便访问
$options可用包含组件配置信息,如el,data,methods
$emit可用用于触发自定义事件
_c可用内部用于创建虚拟 DOM 的方法,一般不推荐直接调用

五、MVVM 的核心优势

  1. 数据驱动视图:无需手动操作 DOM,只需改变数据即可自动更新界面。
  2. 双向绑定:支持v-model实现表单与数据的实时同步。
  3. 分离关注点:业务逻辑(Model)、UI(View)、状态管理(ViewModel)清晰分离。
  4. 易于维护与扩展:组件化开发,利于团队协作。

六、结语

MVVM 模型是 Vue.js 的灵魂所在。它通过Vue 实例作为桥梁,实现了数据与视图的自动同步,极大地提升了开发效率和用户体验。理解 M、V、VM 三者的关系,是掌握 Vue 开发的第一步。

🚀 下一步建议:
学习v-modelcomputedwatch等特性,进一步掌握数据流动机制。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 5:09:22

高精度波形发生器设计中的DDS相位累加器分析

高精度波形发生器设计中的DDS相位累加器&#xff1a;从原理到实战的深度拆解你有没有遇到过这样的场景&#xff1f;在做雷达扫频测试时&#xff0c;要求输出频率以0.1 Hz为步进连续调节&#xff1b;或者在锁相放大系统中&#xff0c;需要两个信号之间保持长期稳定的相位关系。这…

作者头像 李华
网站建设 2026/5/8 10:17:16

LiveCodeBench v5/v6双高分:代码生成能力的真实体现

VibeThinker-1.5B-APP&#xff1a;小模型如何在LiveCodeBench上实现“降维打击”&#xff1f; 在当前大模型军备竞赛愈演愈烈的背景下&#xff0c;千亿参数、万卡集群似乎成了“强AI”的标配。然而&#xff0c;就在人们习惯性地将性能与规模划等号时&#xff0c;一款仅15亿参数…

作者头像 李华
网站建设 2026/5/7 3:03:24

Undetectable接入亮数据代理IP深度测评:高效、稳定、适配性极强的海外多账号运营利器

在当前跨境电商、海外社媒矩阵、数字营销等业务高速发展的背景下&#xff0c;如何安全、高效地管理多个海外账号成为众多从业者的核心需求。而实现这一目标的关键工具之一&#xff0c;便是防关联浏览器 高质量代理IP的组合。其中&#xff0c;Undetectable作为一款新兴且功能强…

作者头像 李华
网站建设 2026/5/7 2:23:43

Geckodriver实战指南:从环境配置到高效自动化测试

Geckodriver实战指南&#xff1a;从环境配置到高效自动化测试 【免费下载链接】geckodriver WebDriver for Firefox 项目地址: https://gitcode.com/gh_mirrors/ge/geckodriver 为什么你的自动化测试总是失败&#xff1f;当你满怀期待运行测试脚本&#xff0c;却频繁遭遇…

作者头像 李华
网站建设 2026/5/3 6:44:56

VSCode多根工作区混乱?AI设计项目组织结构

VSCode多根工作区混乱&#xff1f;AI设计项目组织结构 在算法竞赛选手、科研人员和AI工程实践中&#xff0c;一个常见的痛点浮现&#xff1a;如何让轻量级大模型真正“落地”到日常开发流程中。我们不再只是跑通一个Notebook示例&#xff0c;而是希望将AI推理能力深度嵌入编码、…

作者头像 李华
网站建设 2026/5/1 22:18:55

Windows系统性能优化全攻略:四步实现电脑焕新体验

Windows系统性能优化全攻略&#xff1a;四步实现电脑焕新体验 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 电脑运行缓慢、磁盘空间告急是许多Windows用户面临的…

作者头像 李华