当前位置:首页 > VUE

vue mvvm实现

2026-03-07 07:51:50VUE

Vue MVVM 实现原理

Vue 的 MVVM(Model-View-ViewModel)实现主要依赖于数据绑定和响应式系统。以下是核心实现机制:

响应式数据绑定

Vue 使用 Object.definePropertyProxy(Vue 3)实现数据劫持。当数据变化时,自动触发视图更新。

// 简化版数据劫持示例
function defineReactive(obj, key, val) {
  Object.defineProperty(obj, key, {
    get() {
      return val;
    },
    set(newVal) {
      if (newVal === val) return;
      val = newVal;
      // 触发更新
      dep.notify();
    }
  });
}

虚拟 DOM 与 Diff 算法

Vue 通过虚拟 DOM 优化渲染性能。当数据变化时,生成新的虚拟 DOM 树,通过 Diff 算法比较差异后局部更新真实 DOM。

vue mvvm实现

// 简化版虚拟 DOM 结构
{
  tag: 'div',
  props: { id: 'app' },
  children: [
    { tag: 'span', props: {}, children: ['Hello'] }
  ]
}

模板编译

Vue 将模板编译为渲染函数。模板中的指令和插值会被转换为可执行的 JavaScript 代码。

// 模板
<div id="app">{{ message }}</div>

// 编译后的渲染函数
function render() {
  with(this) {
    return _c('div', { attrs: { "id": "app" } }, [_v(_s(message))]);
  }
}

依赖收集系统

每个响应式属性都有一个 Dep 实例,用于收集依赖的 Watcher。当数据变化时,通知所有 Watcher 更新。

vue mvvm实现

class Dep {
  constructor() {
    this.subs = [];
  }
  addSub(sub) {
    this.subs.push(sub);
  }
  notify() {
    this.subs.forEach(sub => sub.update());
  }
}

实现双向绑定的关键

v-model 指令是语法糖,本质上是 value 属性和 input 事件的组合:

<input v-model="msg">

// 等价于
<input :value="msg" @input="msg = $event.target.value">

生命周期管理

Vue 实例的生命周期钩子提供了在特定阶段执行代码的能力,如 created、mounted 等,这些钩子函数由框架在适当时机调用。

以上机制共同构成了 Vue 的 MVVM 实现,使开发者能够专注于数据和业务逻辑,而不必手动操作 DOM。

标签: vuemvvm
分享给朋友:

相关文章

vue实现通知

vue实现通知

Vue 实现通知功能的方法 使用 Vue 实现通知功能可以通过多种方式实现,以下是一些常见的方法: 使用 Vue 的全局事件总线 在 Vue 中可以通过事件总线实现通知功能。创建一个全局事件总线,然…

实现vue table

实现vue table

Vue 表格实现方法 基础表格实现 使用 Vue 的 v-for 指令可以快速渲染表格数据。在模板中定义表格结构,通过数据绑定动态生成行和列。 <template> <tabl…

vue实现selectable

vue实现selectable

Vue 实现可选择的 Select 组件 在 Vue 中实现一个可选择的 Select 组件,可以通过以下几种方式: 使用原生 HTML select 元素 <template>…

vue实现treeselect

vue实现treeselect

Vue TreeSelect 实现方法 使用 Vue 实现 TreeSelect 组件可以通过以下几种方式完成,包括使用现成的第三方库或自行封装组件。 使用第三方库 推荐使用成熟的第三方 TreeS…

vue 实现弹窗

vue 实现弹窗

Vue 实现弹窗的方法 在 Vue 中实现弹窗功能可以通过多种方式完成,以下是几种常见的方法: 使用组件和 v-if/v-show 控制显示 创建一个独立的弹窗组件,通过 v-if 或 v-show…

vue 实现 confirm

vue 实现 confirm

实现确认对话框的方法 在Vue中实现确认对话框可以通过多种方式完成,包括使用内置组件、第三方库或自定义组件。 使用浏览器原生confirm 最简单的实现方式是直接调用浏览器原生的confirm方法。…