Vue的一部分学习总结

一.什么是Vue

Vue是一款流行的前端JavaScript框架,用于构建用户界面和单页应用程序。Vue由Evan You于2014年创建,它采用了响应式数据绑定和组件化开发的思想。

Vue的核心库只关注视图层,易于集成到其他项目或现有项目中。它具有以下特点:

  1. 响应式数据绑定:Vue通过响应式系统实现数据与视图之间的绑定,当数据变化时,视图会自动更新。

  2. 组件化开发:Vue支持以组件为基本单位构建应用,使得复杂的UI可以被拆分成独立、可复用的组件进行开发和维护。

  3. 简单易学:Vue的API设计简洁明了,学习曲线较为平缓,使得初学者也能快速上手。

  4. 灵活性:Vue提供了许多灵活的特性,如指令、计算属性、过滤器等,以满足不同需求的开发场景。

  5. 高效:Vue采用虚拟DOM和diff算法,能够高效地更新视图,提升了应用的性能。

  6. 生态丰富:Vue生态系统完整,包括Vuex(状态管理)、Vue Router(路由管理)、Vue CLI(脚手架工具)等,能够满足各种复杂应用的需求。

由于这些特点,Vue越来越受到前端开发者的欢迎和青睐,成为构建现代Web应用的首选框架之一。

二.Vue常用的指令

1.v-bind:用于动态绑定数据到HTML元素的属性。例如,<img v-bind:src="imageUrl">会将imageUrl的值绑定到src属性上。

<template>
  <!-- 动态绑定class样式 -->
  <div v-bind:class="{'active': isActive}"></div>

  <!-- 动态绑定style样式 -->
  <div v-bind:style="{color: textColor, fontSize: textSize + 'px'}"></div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true,
      textColor: 'red',
      textSize: 14
    }
  }
}
</script>

在上述示例中,v-bind:class指令会根据isActive的值来判断是否添加active类名。v-bind:style指令会根据textColortextSize的值来动态设置colorfont-size样式。

 

2.v-model:用于实现表单元素与数据的双向绑定。通过v-model指令,可以将输入框、复选框、单选框等表单元素的值与Vue实例中的数据进行同步。

<template>
  <!-- 使用v-model实现双向绑定 -->
  <input v-model="message">
  <span>{{ message }}</span>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello, Vue!'
    }
  }
}
</script>

在上述示例中,我们使用v-model指令将输入框的值与message数据进行双向绑定,当用户在输入框中输入内容时,message的值会随之变化,同时页面上的span元素也会动态地显示message的值。 

3.v-if / v-else:用于条件性地渲染一块内容。可以根据表达式的真假来决定是否显示或隐藏元素。例如,<div v-if="isShow">显示内容</div>会根据isShow的值来决定是否渲染该<div>元素。

<template>
  <div>
    <p v-if="showText">显示的文本</p>
    <p v-else>隐藏的文本</p>
    <button @click="toggleText">切换</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      showText: true
    }
  },
  methods: {
    toggleText() {
      this.showText = !this.showText
    }
  }
}
</script>

在上述示例中,我们使用v-if指令来判断是否显示<p>元素,当showText的值为true时,该元素会被渲染出来;当showText的值为false时,该元素不会被渲染。同时,我们也使用了v-else指令来渲染出另外一个<p>元素,当showText的值为false时,该元素会被渲染出来。

在页面中,我们还加入了一个按钮,并通过@click监听器绑定了一个toggleText方法,该方法会在按钮被点击时将showText的值取反,从而实现动态更新文本的显示与隐藏。

 

4.v-for:用于循环渲染列表数据。通过v-for指令,可以遍历数组或对象,并将每个元素或属性渲染为对应的HTML元素。

<template>
  <!-- 遍历数组 -->
  <ul>
    <li v-for="(item, index) in list" :key="index">
      {{ item }}
    </li>
  </ul>

  <!-- 遍历对象 -->
  <ul>
    <li v-for="(value, key) in obj" :key="key">
      {{ key }}: {{ value }}
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      list: ['apple', 'banana', 'orange'],
      obj: { name: 'Tom', age: 20, gender: 'male' }
    }
  }
}
</script>

在上述示例中,我们使用v-for指令分别遍历了数组和对象,并将它们的每个元素或属性渲染为对应的<li>元素。在遍历数组时,我们可以通过itemindex获取当前元素和索引值;在遍历对象时,我们可以通过valuekey获取当前属性的值和名称。 

5.v-on:用于绑定事件监听器。通过v-on指令,可以在触发特定事件时执行相应的方法。例如,<button v-on:click="handleClick">点击按钮</button>会在按钮点击时调用handleClick方法。

<template>
  <!-- 监听点击事件 -->
  <button v-on:click="handleClick">点击按钮</button>

  <!-- 监听键盘事件 -->
  <input v-on:keyup.enter="handleKeyup">
</template>

<script>
export default {
  methods: {
    handleClick() {
      console.log('Button clicked!')
    },
    handleKeyup() {
      console.log('Enter key pressed!')
    }
  }
}
</script>

在上述示例中,我们使用v-on:click指令监听了按钮的点击事件,并在handleClick方法中输出了一条日志;同时,我们也使用v-on:keyup.enter指令监听了输入框的回车事件,并在handleKeyup方法中输出了一条日志。

除了以上列举的指令外,Vue还提供了其他一些常用的指令,如v-textv-htmlv-cloak等,每个指令都有其特定的作用和用法。开发者可以根据具体需求选择合适的指令来操作和控制DOM元素。

三.Vue的组件

概述:组件是Vue.js最强大的功能之一,组件可以扩展HTML元素,也可以封装可重用的代码,组件系统让开发人员可以用独立可复用的小组件来构建大型应用。

组件的出现,能够让开发人员以不同的组件,来划分不同的功能模块,将来需要什么样的功能,去调用对应的组件即可。

为什么使用组件

1、方便重复使用

2、减少代码重复冗余

3、便于多人协同开发

4、有助于提高开发效率

5、提升整个项目的可维护性

Tip:通常,代码中一些没有见过的自定义标签,如<my-component>等,就是组件。每一个标签代表一个组件,组件一旦注册成功,就可以复用,可以在很多需要的地方直接使用即可。

举例,比如 elementVant 就是两个典型的提供了很多内置组件的UI框架。

组件的使用

1、在components 文件夹新建组件页面

2、在需要此组件的页面调用组件

 组件间的通信

组件是是Vue.js中最强大的功能之一。组件实例的作用域是相互独立的,这就意味着不同组件之间的数据是无法共享的。一般组件之间的关系如图所示。

A和B,B和C、B和D都是父子关系,C和D是兄弟关系,A和C、A和D是隔代关系(可能隔多代)。

组件通信时,根据组件之间的关系的不同,有着不同的通信方式。一般通信分为3种情况:父组件向子组件通信、子组件向父组件通信、非父子组件之间的通信。针对不同的场景,需要使用不同的通信方式。

1、父组件向子组件传递数据,需要props属性来实现。

2、子组件向父组件传值,需要用到自定义事件,整个通信的过程为:

        2.1、子组件使用this.$emit('事件名','需要传输的数据')来触发事件,父组件使用$on()来监听子组件的事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值