news 2026/4/23 11:14:55

【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/20 9:06:48

ComfyUI安全限制终极突破:5分钟彻底解除操作禁令

ComfyUI安全限制终极突破&#xff1a;5分钟彻底解除操作禁令 【免费下载链接】ComfyUI-Manager 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager 当你满怀期待地在ComfyUI中尝试新功能时&#xff0c;"此操作在当前安全级别下不被允许"的提示框…

作者头像 李华
网站建设 2026/4/16 14:16:12

ComfyUI安全限制终极解决方案:从深度诊断到系统优化

ComfyUI安全限制终极解决方案&#xff1a;从深度诊断到系统优化 【免费下载链接】ComfyUI-Manager 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager ComfyUI-Manager作为AI绘画工作流的核心管理组件&#xff0c;其安全机制设计旨在保护用户免受恶意节点和…

作者头像 李华
网站建设 2026/4/23 11:14:05

从零实现:基于大电流需求的功率电感封装选型

从零实现&#xff1a;如何为大电流电源选对功率电感封装&#xff1f;你有没有遇到过这样的情况&#xff1a;DC-DC电路设计完成&#xff0c;BOM也确认了&#xff0c;结果一上电——电感烫得像烙铁&#xff0c;输出电压在重载下突然塌陷&#xff0c;EMI测试直接挂掉。排查一圈后发…

作者头像 李华
网站建设 2026/4/23 8:33:19

TinyMCE中文文档更新慢?VibeThinker辅助翻译解读

TinyMCE中文文档更新慢&#xff1f;VibeThinker辅助翻译解读 在中文开发者日常工作中&#xff0c;一个令人头疼的现实是&#xff1a;许多主流开源项目的中文文档长期停滞不前。以富文本编辑器 TinyMCE 为例&#xff0c;其英文文档持续迭代&#xff0c;而官方中文版本却停留在数…

作者头像 李华
网站建设 2026/4/18 22:36:15

视频字幕智能提取技术:从本地化处理到多语言支持的完整解决方案

视频字幕智能提取技术&#xff1a;从本地化处理到多语言支持的完整解决方案 【免费下载链接】video-subtitle-extractor 视频硬字幕提取&#xff0c;生成srt文件。无需申请第三方API&#xff0c;本地实现文本识别。基于深度学习的视频字幕提取框架&#xff0c;包含字幕区域检测…

作者头像 李华
网站建设 2026/4/21 6:21:55

一文说清LDO设计核心要点:电源管理芯片基础

LDO设计的硬核真相&#xff1a;不只是“稳压”&#xff0c;更是系统性能的隐形推手 在一块小小的MCU电路板上&#xff0c;你可能只看到几个电容、一个电源芯片和一堆走线。但真正决定系统能否稳定运行、电池能撑多久、ADC采样是否精准的&#xff0c;往往不是主控&#xff0c;而…

作者头像 李华