Vue2学习小笔记(一篇带你入门)
创始人
2025-05-29 22:14:50

一篇入门Vue2

  • 一、基础概念
    • 1.1 MVC和MVVM
    • 1.2 初识Vue
      • 1.2.1 Vue是什么
      • 1.2.2 数据绑定的方式
    • 1.3 数据代理
      • 1.3.1 什么是数据代理
      • 1.3.2 Vue中的数据代理
  • 二、事件
    • 2.1 事件处理
      • 2.1.1 事件监听器
      • 2.1.2 键盘属性
    • 2.2 绑定样式
      • 2.2.1 绑定class
      • 2.2.2 绑定style
    • 2.3 Vue的事件修饰符
  • 三、内置属性
    • 3.1 计算属性和监视属性
      • 3.1.1 计算属性
      • 3.1.2 监视属性
      • 3.1.3 两个属性的异同
      • 3.1.4 使用场景
    • 3.2 v-show和v-if
      • 3.2.1 作用
      • 3.2.2 区别
      • 3.2.3 使用场景
    • 3.3 过滤器
  • 五、指令
    • 5.1 常用内置指令
      • 5.1.1 v-text
      • 5.1.2 v-html
      • 5.1.3 v-text和v-html区别
      • 5.1.4 v-pre
      • 5.1.5 v-cloak
      • 5.1.6 v-once
    • 5.2 自定义指令
  • 六、Vue的生命周期
  • 七、插件和组件
    • 7.1 插件
    • 7.2 什么是组件
    • 7.3 单文件组件
    • 7.4 非单文件组件
    • 7.5 mixin混入
    • 7.6 scoped样式
    • 7.7 两个新的生命周期钩子
  • 八、脚手架
    • 8.1 什么是脚手架
    • 8.2 脚手架安装步骤
      • 方法一:
      • 方法二:
    • 8.3 脚手架属性
      • 8.3.1 ref属性
      • 8.3.2 props属性
  • 九、组件通信
    • 9.1 组件自定义事件
    • 9.2 全局事件总线
    • 9.3 消息订阅与发布
  • 十、过渡与动画
  • 十一、 axios
    • 11.1 概述
    • 11.2 axios语法
    • 11.3 并发请求和请求拦截器:
    • 11.4 axios的参数
  • 十二、配置代理服务器
    • 12.1 为什么配置代理服务器
    • 12.2 如何配置
  • 十三、插槽
      • 13.1 默认插槽
      • 13.2 具名插槽
      • 13.3 作用域插槽
  • 十四、VueX
    • 14.1 什么是vuex
    • 14.2 vuex的属性
    • 14.3 如何安装并使用vuex
  • 十五、路由(router)
    • 15.1 什么是路由
    • 15.2 Vue Router的基本使用
    • 15.3 参数和属性
    • 15.4 参数传递
    • 15.5 路由守卫
    • 15.6 路由管理方式

一、基础概念

1.1 MVC和MVVM

  1. MVC模型:

MVC代表模型-视图-控制器,是一种将应用程序分成三个部分的软件架构模式:模型、视图和控制器。模型负责处理应用程序的数据和业务逻辑,视图负责呈现数据,控制器负责处理用户的输入和对模型和视图的更新。

  1. MVVM模型(Vue所使用的模型):

MVVM代表模型-视图-视图模型,是一种将应用程序分成三个部分的软件架构模式:模型、视图和视图模型。模型和视图在MVVM中的角色与MVC中的角色相同,但视图模型则是一个新的组件,负责将模型中的数据转换为视图所需的格式,同时处理用户的输入并更新模型。

  1. MVCMVVM的区别:

MVCMVVM都是软件架构模式,它们的目标都是将应用程序分成不同的部分,以提高应用程序的可维护性、可扩展性和可测试性。它们之间的主要区别在于以下几个方面:

  1. 视图和视图模型的关系不同:在MVC中,视图和控制器是紧密耦合的,控制器通常直接操作视图。而在MVVM中,视图和视图模型是分离的,视图模型将数据和业务逻辑从视图中分离出来,因此视图可以更加独立地开发和测试。
  2. 数据绑定方式不同:在MVC中,控制器负责将模型和视图连接起来,通常使用手动编写的代码来实现。而在MVVM中,视图和视图模型之间通常使用双向数据绑定技术进行通信,这意味着视图中的数据可以直接绑定到视图模型中的数据属性,使得开发更加快速、简单和高效。
  3. 数据流动方向不同:在MVC中,控制器负责处理用户的输入并更新模型和视图。而在MVVM中,视图模型负责处理用户的输入,并更新模型和视图。这意味着视图模型具有更多的责任和控制权,可以更好地管理应用程序中的数据流动。

1.2 初识Vue

1.2.1 Vue是什么

  1. Vue是一套用于构建用户界面的渐进式框架。
  2. 与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。
  3. Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页应用提供驱动。

1.2.2 数据绑定的方式

Vue中有2种数据绑定的方式:

  1. 单向绑定(v-bind):数据只能从data流向页面。
  2. 双向绑定(v-model):数据不仅能从data流向页面,还可以从页面流向data

el的2种写法

  1. new Vue时候配置el属性。
  2. 先创建Vue实例,随后再通过vm.$mount('#root')指定el的值。

1.3 数据代理

1.3.1 什么是数据代理

  1. 数据代理是一种编程模式,它通过将某个对象的属性访问代理到另一个对象上,从而实现对该对象的属性访问和修改。在JavaScript中,数据代理通常使用Object.definePropertyProxy对象实现。

  2. 数据代理可以使代码更加简洁和易读,尤其是当需要频繁地访问某个对象的属性时。通过数据代理,我们可以将该对象的属性访问和修改都代理到另一个对象上,从而避免了频繁的属性访问和修改操作,提高了代码的可读性和可维护性。

1.3.2 Vue中的数据代理

  1. Vue中的数据代理是指在Vue实例中通过 $data$props 属性将组件实例的数据和属性代理到组件实例本身,从而可以在组件实例中直接访问和修改这些数据和属性。

  2. 具体来说,当创建一个Vue组件实例时,Vue会将组件实例的 $data$props 属性分别代理到组件实例本身。通过 $data 属性,我们可以访问组件实例中定义的响应式数据,通过 $props 属性,我们可以访问组件实例中传递的属性。

  3. 例如,我们可以在组件实例中通过 this.$data 来访问组件实例中定义的响应式数据对象,通过 this.$props 来访问组件实例中传递的属性对象。而当我们在组件实例中直接访问某个数据属性时,Vue会将这个访问操作代理到组件实例的 $data 属性上,从而实现了对组件实例中定义的响应式数据的访问和修改。

  4. 需要注意的是,由于 Vue的响应式数据只能在组件实例中使用,因此在组件实例中定义的数据和方法都需要通过 datamethods 属性进行声明和初始化。在声明和初始化后,这些数据和方法就会被代理到组件实例中,可以在组件实例中通过 $data$methods 属性进行访问和修改。

二、事件

2.1 事件处理

2.1.1 事件监听器

  1. JavaScript:通过获取DOM对象再往DOM对象上使用addEventListener注册监听事件
const btn = document.querySelector('#my-button')
btn.addEventListener('click', function() {alert('点击事件!')
})
  1. jQuery:通过$选择器绑定对象再使用on进行注册监听事件
$('#my-button').on('click', function() {alert('点击事件!')
})
  1. Vue:监听事件和数据绑定结合得更加紧密,可以通过事件处理函数直接访问组件实例中的数据,通过v-on@进行注册监听事件

2.1.2 键盘属性

  1. JavaScript获取方式:

JavaScript中,键盘事件相关的属性有 keykeyCodecode,它们分别表示不同的含义。

  • key 属性:表示键盘按键的字符串值,是一个标准的字符串,比如 abEnterArrowDown 等等,可以区分大小写。这个属性在处理文本输入的时候非常有用。
  • keyCode 属性:表示键盘按键的数字码,是一个整数值,每个键都有一个唯一的数字码,比如 65 表示字母 A。这个属性在处理非文本输入的时候非常有用,比如控制游戏角色的移动方向等。
  • code 属性:表示键盘按键的物理码,是一个字符串,与键盘布局相关,而不是与字符编码相关。不同的键盘布局可能会有不同的 code 值,比如在QWERTY键盘布局下,字母 aqcode 值是不同的。这个属性在处理键盘布局相关的情况下非常有用。

需要注意的是,虽然这些属性的用途有所区别,但在不同的浏览器和操作系统下,它们的行为可能会有所不同。

  1. Vue获取方式:

在Vue中除了可以使用原生JavaScript的方式获取键盘属性,还可以使用@keyup@keydown直接通过 . 进行对键盘事件的监听。


2.2 绑定样式

Vue中,绑定样式可以通过 v-bind:classv-bind:style 指令来实现。

2.2.1 绑定class

  1. 可以通过 v-bind:class 指令来动态绑定元素的 class 属性


在这个例子中,

元素的 class 属性会根据 isActiveisBold 数据属性的值动态变化。当 isActivetrue 时,元素会添加 active 类;当 isBoldtrue 时,元素会添加 text-bold 类。

  1. 如果需要绑定多个类名,可以通过对象语法和数组语法来实现

在这个例子中,

元素的 class 属性会根据 isActiveclassList 数据属性的值动态变化。classList 是一个数组,包含了元素需要添加的其他类名。

2.2.2 绑定style

  1. 可以通过 v-bind:style 指令来动态绑定元素的 style 属性

在这个例子中,

元素的 style 属性会根据 textColortextSize 数据属性的值动态变化。textColor 表示文本颜色,textSize 表示文本大小。

  1. 如果需要绑定多个样式,可以通过对象语法和数组语法来实现


在这个例子中,

元素的 style 属性会根据 baseStylesadditionalStyles 数据属性的值动态变化。baseStylesadditionalStyles 都是对象,包含了需要添加的样式。如果有相同的样式属性,后面的样式会覆盖前面的样式。

2.3 Vue的事件修饰符

Vue中,事件修饰符是指用来简化事件监听的一些特殊指令。事件修饰符可以通过在事件后面加上特殊的符号来实现,例如 .stop.prevent 等。下面介绍一些常用的事件修饰符及其作用:

  1. .stop:阻止事件冒泡。
    例如:

在这个例子中,当点击

在这个例子中,当点击