原创

Vue

Vue 的架构是什么?和 MVC 有什么区别?

发表于 2024-08-02

更新于 8月前

阅读量: 110

Vue.js 的架构主要基于 MVVM(Model-View-ViewModel)模式,这是与传统的 MVC(Model-View-Controller)模式不同的一种设计模式。

Vue.js 的架构(MVVM)

Model(模型):

  • 表示应用程序的数据和业务逻辑。数据通常是从服务器获取的,也可以是本地存储的。
  • 在 Vue 中,数据是响应式的,通过 data 属性定义,可以使用 Vue 的观察者机制自动更新视图。

View(视图):

  • 表示用户界面,用户与应用程序交互的部分。
  • 在 Vue 中,视图是由模板(template)定义的,模板中可以使用 Mustache 语法(双大括号 {{ }})插入数据。

ViewModel(视图模型):

  • 是 View 和 Model 之间的桥梁,负责将 Model 中的数据显示在 View 上,并将 View 的用户输入传递给 Model。
  • 在 Vue 中,ViewModel 是由 Vue 实例(即 new Vue())表示的,它包含数据绑定和 DOM 监听逻辑。

MVC 架构

Model(模型):

  • 同样表示应用程序的数据和业务逻辑。

View(视图):

  • 表示用户界面。

Controller(控制器):

  • 负责处理用户输入,将用户操作转换为对 Model 的操作。

区别

  • 职责划分:在 MVC 中,Controller 负责处理用户输入和业务逻辑。而在 MVVM 中,ViewModel 扮演了这一角色,通过双向数据绑定简化了 View 和 Model 之间的交互。
  • 数据绑定:Vue.js 提供了自动的数据绑定机制(双向数据绑定),使得 View 和 Model 之间的同步变得非常简单。而在传统的 MVC 模式中,通常需要手动编写代码来同步 View 和 Model。
  • 简化代码:由于 Vue.js 的响应式数据和双向数据绑定,开发者可以专注于业务逻辑,而不必花费大量时间处理 DOM 更新和数据同步的问题。这与 MVC 模式中常见的复杂的事件处理和数据更新代码形成对比。

示例

<div id="app">
  <p>{{ message }}</p>
  <input v-model="message">
</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script>
  new Vue({
    el: '#app',
    data: {
      message: 'Hello, Vue!'
    }
  });
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  • data 定义了 Model 中的数据。
  • 模板中的 {{ message }} 和 input 组成了 View。
  • Vue 实例作为 ViewModel,管理数据和视图之间的绑定和更新。

总的来说,Vue.js 的 MVVM 架构通过简化视图和数据的绑定过程,提高了开发效率,减少了手动同步代码的复杂性。相比之下,传统的 MVC 模式更适用于需要明确控制器逻辑的应用程序。

评论
0/100
0/100
0/100
0/250
暂无评论