当前位置:首页 > VUE

vue怎样实现mvvm

2026-01-08 05:11:45VUE

Vue 实现 MVVM 的原理

Vue 的 MVVM(Model-View-ViewModel)模式通过数据绑定和响应式系统实现视图与数据的自动同步。以下是 Vue 实现 MVVM 的核心机制:

数据劫持(响应式系统)

Vue 使用 Object.defineProperty(Vue 2)或 Proxy(Vue 3)劫持数据的读写操作。当数据变化时,触发依赖的视图更新。

// Vue 2 的数据劫持示例
const data = { name: 'Vue' };
Object.defineProperty(data, 'name', {
  get() {
    console.log('读取数据');
    return value;
  },
  set(newVal) {
    console.log('更新数据');
    value = newVal;
    updateView(); // 触发视图更新
  }
});

依赖收集

通过 Dep(依赖管理器)和 Watcher(观察者)实现依赖跟踪。每个响应式属性有一个 Dep 实例,当属性被访问时,当前 Watcher 会被记录到 Dep 中。

class Dep {
  constructor() {
    this.subscribers = [];
  }
  depend() {
    if (target && !this.subscribers.includes(target)) {
      this.subscribers.push(target);
    }
  }
  notify() {
    this.subscribers.forEach(sub => sub());
  }
}

模板编译

Vue 将模板编译为渲染函数,解析指令(如 v-model)和插值表达式({{}}),建立数据与 DOM 的绑定关系。

// 示例:v-model 双向绑定实现
<input v-model="message">
// 编译后等效于
<input :value="message" @input="message = $event.target.value">

虚拟 DOM

通过虚拟 DOM 比对(Diff 算法)最小化真实 DOM 操作。数据变化时生成新的虚拟 DOM,与旧节点对比后局部更新视图。

vue怎样实现mvvm

// 简化的虚拟 DOM 结构
const vnode = {
  tag: 'div',
  props: { id: 'app' },
  children: [
    { tag: 'span', text: this.message }
  ]
};

MVVM 各层职责

  • Model:普通 JavaScript 对象,如 Vue 的 data
  • View:模板或渲染函数生成的 DOM。
  • ViewModel:Vue 实例,负责数据绑定、事件监听等桥梁作用。

通过以上机制,Vue 实现了数据变化自动驱动视图更新(数据绑定),以及视图交互反向修改数据(双向绑定)的 MVVM 模式。

标签: vuemvvm
分享给朋友:

相关文章

vue实现选择季度

vue实现选择季度

Vue 实现选择季度的几种方法 使用下拉选择框(Select) 在 Vue 中可以通过 v-model 绑定一个下拉选择框来实现季度选择。数据可以预先定义为一个包含季度选项的数组。 <…

vue实现流程

vue实现流程

Vue 实现流程的基本步骤 安装 Vue.js 可以通过 CDN 引入或使用 npm/yarn 安装。 CDN 方式: <script src="https://cdn.jsdelivr.…

vue实现erp

vue实现erp

Vue实现ERP系统的关键步骤 技术选型与架构设计 采用Vue 3 + TypeScript构建前端,搭配Pinia状态管理,Element Plus或Ant Design Vue作为UI框架。后端可…

vue代理实现

vue代理实现

Vue 代理实现方法 在 Vue 项目中,配置代理可以解决开发环境下的跨域问题,通常通过修改 vue.config.js 文件实现。以下是几种常见的代理配置方式: 基础代理配置 在 vue.conf…

vue实现flbook

vue实现flbook

Vue 实现类似 Flbook 的翻页效果 要实现类似 Flbook 的翻页效果,可以使用 Vue 结合 CSS 动画和 JavaScript 事件处理。以下是实现方法: 安装依赖 需要安装 vue…

vue 实现单点登录

vue 实现单点登录

单点登录(SSO)实现原理 单点登录允许用户通过一次身份验证访问多个系统。核心原理是用户首次登录后,认证中心颁发令牌(如Token),其他系统通过验证令牌实现免登录。 Vue中实现SSO的方案 基于…