这些年 我常用的vue指令 总结加深印象

271 阅读4分钟

前言

  先说一下Vue框架,Vue是一个渐进式的JavaScript的框架。vue已经成为国内流行的框架,慢慢成为前端工程师 
的一项基础技能。它的开发更加高率和简洁易于维护。Vue的虚拟Dom,数据双向绑定,使开发者可以快速上手。 
对于来说初学者非常的友好。Vue指令用起来也很方便。

常用的指令

   有v-for指令、v-show指令、v-if指令、v-else-if指令、v-else指令、v-html、v-text指令、v-bind指令
v-on指令、v-model指令、v-once等等. 

vue指令 v-for

v-for 是用来循环生成,渲染列表。相当于dom树里的for循环 功能一样。
特定的语法规范:v-for="(值, 索引或者属性名) in 目标结构" :key="唯一值"></标签>  
索引是下标,可以省略。 
目标结构可以是数组、对象、数字。

示例

<template>
  <div>
    <h2>v-for</h2>
    <ul>
      <!-- 
        item 是循环的变量 用来指向当前的数组元素 
        idx:下标
        key要是一个在循环的过程中的唯一值
       -->
      <li v-for="(item, idx) in arr" :key="idx">
        {{ item }},{{ item.id }},{{ item.name }},
      </li>
    </ul>

    <!-- 对象 -->
    <!-- <p v-for="(value, propName) in obj" :key="propName">
      {{ value }}--{{ propName }}
    </p> -->
    <hr />
    <!-- 数字 -->
    <!-- <p v-for="idx in 100" :key="idx">{{ idx }} I miss you</p> -->
  </div>
</template>
<script>
export default {
  data() {
    return {
      arr: [
        { id: 1, name: "小涵" },
        { id: 2, name: "小舞" },
        { id: 3, name: "小明" },
      ],
    };
  },
};
</script>


小结 v-for的特点

1.v-for功能是是对标签进行循环生成标签。
2.快速把数据赋值到该标签上循环生成列表  

vue指令 v-bind

作用:v-bind用来动态绑定标签上的属性的值。(标签上的属性值不能使用插值表达式来设置)。

语法格式

<元素 v-bind:属性名1="值1" v-bind:属性名2="值2"></元素>
// 简写, 省略v-bind
<元素 :属性名1="值1" :属性名2="值2"></元素>  

v-bind指令有简写用法 : 冒号,例如:

<img :src="data数据">

一般在是在属性名的=里面写一个data中的数据项,  :属性名="数据项" 称之为:把x绑定在y属性上

示例:

<template >
  <div>
    <h2>v-bind</h2>
    <p>姓名: {{ name }}</p>
    <!-- 没有加冒号 这就是一个路径  不能这么写 会报错-->
    <!-- <img src="{{imgUrl}}" alt=""> -->
    <!-- 加了冒号 这就是一个变量  这个是简写-->
    <img :src="imgUrl" alt="" />
    <!-- 这个是规范格式 -->
    <!-- <img v-bind:src="imgUrl" alt=""> -->
  </div>
</template>

<script>
export default {
  //  格式固定,定义vue数据变量的函数
  data() {
    return {
      name: "美女图片",
      imgUrl:
        "http://img01.sogoucdn.com/app/a/100520021/81e3068821f453f2ce6197462d80dfb0",
    };
  },
};
</script>

功能

vue指令 v-text和v-html

语法:

  • v-text="vue数据变量"
  • v-html="vue数据变量" 示例
<template>
  <div>
    <h2>v-text v-html</h2>
    <p>{{ str }}</p>
    <p v-text="str">abc</p>
    <p v-html="str"></p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      str: "<i>i标签</i><h3>h3</h3>",
    };
  },
};
</script>

小结 v-text 和 v-html的区别

 v-text把值当成普通字符串显示, v-text ===> innerText

 v-html把值当做html解析,v-html ===> innerHTML

vue指令v-show和v-if

作用:控制标签的可见和不可见

语法

  • <标签 v-show="vue变量" />

  • <标签 v-if="vue变量" />

如果vue变量的值为true,就可见,否则就不可见。

原理

  • v-show 用的display:none隐藏   (频繁切换使用)
  • v-if  直接从DOM树上添加或移除
<template>
  <div>
    <h1 v-show="isOk">v-show的盒子</h1>
    <h1 v-if="isOk">v-if的盒子</h1>

    <div>
      <p v-show="age > 18">我成年了</p>
      <p v-if="age > 18">我成年了</p>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isOk: true,
      age: 15,
    }
  }
}
</script>

小结 v-if 和 v-show的区别

  • v-show 性能较好,对应需要频繁切换显示与隐藏的功能,可以使用v-show。
    • 注意无论变量是否为true还是false,它一定会创建元素的。
  • v-if 会动态创建和删除元素。
    • 在频繁的切换可见与不可见时,它的效率会低一点
    • 如果变量的值为false,它将不会创建元素

在合适的地方,就用合适的指令:例如 盒子需要频繁切换 就要用到 v-show 例如 登陆用户就显示头像

vue指令v-if,v-else-if,else

功能:模板中的选择结构 用于筛选条件的

格式:与js中的if选择结构是一致的

<标签 v-if="条件">        </标签> 
<标签 v-else-if="条件">   </标签> 
<标签 v-else-if="条件">   </标签> 
<标签 v-else>             </标签> 

示例

功能要求:

大于80的:显示优秀

60~80之间的: 显示一般

小于60的: 显示不及格

<script>
    //  if(){
       
    //  }
    //  else if(){

    //  }
    //  else{

    //  }

   </script>
   <template>
     <h2>学习v-if-elseif-else</h2>
     <p v-if="num >= 80">优秀</p> 
     <p v-else-if="num >= 60">一般</p> 
     <p v-else>不及格</p>
   </template>
   <script>
      export default {
        data () {
          return {
            num: 59 // 分数
          }
          
        }
      }
   </script>

v-on

作用

给标签绑定事件

语法

  1. <标签 v-on:事件名="要执行的少量代码" >
  2. <标签 v-on:事件名="methods中的函数" >
  3. <标签 v-on:事件名="methods中的函数(实参)">

注意

  1. v-on可以简写成 @。 即 @事件名="methods中的函数"
  2. 事件名可以是任意合法的dom事件

示例

<!-- vue指令:   v-on事件绑定-->
<button v-on:click="msg=1">简单代码直接写</button>
<button v-on:click="add2">增加2个,调用函数</button>
<button v-on:click="addN(5)">一次加5件,调用函数传递参数</button>

<button @mouseenter="mouseFn">鼠标进入事件</button>

<script>
    export default {
        data(){
          return {
            msg: 'v-on'
          }
        },
        methods: {
            add2(){
                console.log('add2')
            },
            addN(num){
                console.log(num)
            },
            mouseFn(){
                console.log('mouseFn')
            }
        }
    }
</script>

vue配置项-methods

作用

它是一个对象,在这个对象中定义函数\

格式

JavaScript复制代码

export default {
 methods: {
   函数1: function(){
   },
   函数2(){
   }
}

使用场景

  1. 与v-on配合使用
  2. 在methods内部访问数据。this.xxx
  3. 在methods内部调用其他的methods

v-once

v-once是属于事件修饰符中的一种

作用:程序运行期间, 只触发一次事件处理函数

语法: <标签 v-once="要执行的函数"><标签>

<template>
  <div>
    <!-- 
     ● .once - 程序运行期间, 只触发一次事件处理函数 -->
    <h2>10事件修饰符.vue</h2>
  
    <br />
    <button @click.once="fn">就能用一次</button>
  </div>
</template>

<script>
export default {
  methods: {
    fn() {
      console.log("按钮点击了");
    },
  },
};
</script>

<style>
</style>

小结

v-once 只会触发第一次的点击,再点击第二次、第三次就不会再执行了。 v-once 后面不需要跟任何表达式。 v-once 表示元素和组件只会渲染一次,不会跟随数据的改变而改变。