vue学习路线(6.MVVM模型)

116 阅读1分钟

1.MVVM模型

MVVM 模型 全称为 Model-View-ViewModel,是一种架构模式,用于分离用户界面与业务逻辑。

严格MVVM 模型要求View不能和Model直接通信,而Vue提供$refs 属性,让Model直接操作View,违反规定,所以说Vue没有完全遵循MVVM 模型

Vue虽然没有完全遵循 MVVM 模型,但设计也受到了它的启发。因此在文档中经常会使用 vm (ViewModel 的缩写) 这个变量名表示 Vue 实例。

它由三部分组成:

M:模型(Model):Model代表应用程序中的数据和业务逻辑,可以理解为data中的数据

V:视图(View):View是用户直接看到和交互的界面,可以理解为模板代码

VM:视图模型(ViewModel): ViewModel是MVVM模式的核心部分,它起到了连接Model和View的桥梁作用。一方面,它从Model获取数据并进行处理,转换为适合View展示的格式;另一方面,它接收View的用户输入事件,经过处理后更新Model。可以理解为Vue实例

image.png

2.通过案例理解MVVM模型

完整代码:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>MVVM模型</title>
    <!-- 引入开发版vue -->
    <script src="../js/vue.js"></script>
  </head>
  <body>
    <!-- 准备好一个容器 -->
    <div id="app">
      <h3>学校名称:{{name}}</h3>
      <h3>学校地址:{{address}}</h3>
      <!-- vm身上所有的属性及vue原型上的所有属性,在vue模板中都可以直接使用 -->
       <h3>测试1:{{$options}}</h3>
       <h3>测试2:{{$emit}}</h3>
       <h3>测试3:{{_data}}</h3>
    </div>
    <script type="text/javascript">
      //创建vue实例
      const vm = new Vue({
        data() {
          return {
            name: "大学校",
            address: "北京",
          };
        },
      });
      console.log(vm)
      vm.$mount("#app");
    </script>
  </body>
</html>

观察发现

1.data中的所有属性,最后都出现在了vm身上;

2.vm身上所有的属性及vue原型上的所有属性,在vue模板中都可以直接使用。

image.png

image.png