快速了解并掌握vue指令的使用场景和注意事项

571 阅读5分钟

前言:大家都知道vue在今年即将推出vue3了,但是我发现自己对vue的一些常用指令还是很不熟悉,有的时候想到用什么就用什么,导致写出的代码质量不高。今天重新把这些指令梳理一下,发现自己以前很多地方用的不恰当。

1. 大家都知道我们在写Vue的时候,数据都是写在data里面,之后我们在获取。

 <div id="app">{{message}}</div>
<script>
var app = new Vue({
el:"#app",
data:{
message:"世界你好"
}
})
</script>



可以看到data的数据渲染上HTML结构上了。

除了上面的方法,在vue里面有一个v-text 指令,可以设置标签的文本值

<div id="app">        <h1 v-text="message"></h1>    </div>    <script>    var app = new Vue({    el:"#app",    data:{    message:"世界你好"    }    })


v-html 设置标签 inner HTML

  <div id="app">    <h2 v-html="content"></h2>    </div><script>    var app =new Vue({        el:"#app",        data:{            content:"<a href='https:www.baidu.com'>百度教育</a>",                      message:"周末",            info:"",            school:{                name:'东华理工大学',                mob:'18170877760'            },            con:["北京","上海","深圳"]        }    })


对比总结:

  • v-text和v-html都可以将data的数据渲染在结构上去。
  • v-html不仅可以写简单的数据,还可以写HTML结构。
  • 一般我们写代码还是习惯性的使用{{item}},比较简单,毕竟能少写几个字母也是好的。

作者:知悉
链接:https://juejin.cn/post/6844904083699007496
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2. v-on 为元素绑定事件  

  •  v-on 指令的作用是为元素绑定事件
  •  事件名不需要写on
  •  指令可以简写为@
  •  绑定的方法定义在methods属性中
  •  方法内部通过this关键字可以访问定义在data中数据

<div id="app">  
    <h2  @click="change">{{message}}</h2> 
   </div>
<script>  
  var app =new Vue({   
     el:"#app",       
       data:{  
                      message:"西兰花炒蛋",   
           },
      methods:{       
                change:function(){         
                var a = this.message+="好好吃"     
                 console.log(a)            }        }    })


大家可以看到v-on是给元素绑定方法,我们可以用在点击事件上,通过函数来改变事件的状态。

7. v-show 根据表达值的真假,切换元素的显示和隐藏
  • v-show 指令的作用是:根据真假切换元素的显示状态
  • 原理是修改的display,实现显示隐藏
  • 指令后面的内容,最终都会解析为布尔值
  • 值为true元素显示,值为false元素隐藏
  • 数据改变之后,对应元素的显示状态会同步更新

<div id="app">
<input type="button" value="切换显示状态" @click="changeisshow">    
    <img  v-show="isshow" src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1583550568&di=9f26c500905d03a953d52a323e284041&src=http://pics7.baidu.com/feed/7aec54e736d12f2e60660804b070c264843568a8.jpeg?token=0359d5596c68e93e4ffb6615e0340093&s=FA64C14EC62000BE9F34DCB20300D010"alt="">        <img  v-show="age>18" src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1583550568&di=9f26c500905d03a953d52a323e284041&src=http://pics7.baidu.com/feed/7aec54e736d12f2e60660804b070c264843568a8.jpeg?token=0359d5596c68e93e4ffb6615e0340093&s=FA64C14EC62000BE9F34DCB20300D010"alt="">    </div> 
   <script>    
    var app = new Vue({      
      el: "#app",      
      data: {       
        isshow:false,    
          age:18       
    },   
         methods: {       
         changeisshow:function(){         
           this.isshow=!this.isshow      
          }      
               
    }    
   })  
  </script>
8. v-if 根据表达式的真假,切换元素的显示和隐藏
  • 本质是通过操作dom元素来切换显示状态
  • 表达式的值为true,元素存在于dom树中,为false从dom树中移除
  • 频繁的切换v-show,反之使用v-if,前者的切换消耗小

<div id="app">  
  <input type="button" @click="changeishsow">     
   <p v-if="isshow"> 世界真好</p>      
  <p v-if="tempture>35"> 世界真好</p>  
  </div>   
 <script>      
  var app = new Vue({        
    el: "#app",      
      data: {               
 isshow: false,     
  tempture:15  
         },        
    methods: {  
           changeishsow: function () {       
            this.isshow=!this.isshow        
     }         
   }      
  })  
  </script>
9. v-bind 设置元素的属性
  • v-bind:属性名=表达式
  • v-bind指令的作用是:为元素绑定属性
  • 完整写法是v-bind:属性名
  • 简写的话可以直接省略v-bind,只保留 :属性名
  • 需要动态的增删class建议使用对象的方式

<style>  
  .active{  
      border: 1px solid red;   
 }
</style>
</head>
<body> 
   <div id="app">  
     <img v-bind:src="imgurl" alt=""> 
      <img :src="imgurl" alt="" :title="title" :class="isActive?'active':''" @click="change">       <img :src="imgurl" alt="" :title="title" :class="{active:isActive}" @click="change">    
      </div>    <script>     
   var app = new Vue({    
        el: "#app",      
      data: {         
       imgurl:'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1583570751554&di=5f741b5931cbe03e392b8e0a3499ca78&imgtype=0&src=http%3A%2F%2Fcdn.duitang.com%2Fuploads%2Fitem%2F201410%2F20%2F20141020152020_n2Yeh.jpeg',          
      title:"您好,世界",       
         isActive:false     
       },       
    methods: {    
           change:function(){   
                this.isActive=!this.isActive   
            }    
        }    
    })   
 </script>

10. v-for 根据数据生成列表结构
  • v-for指令的作用是;根据数据生成列表结构
  • 数组经常和v-for结合使用
  • 语法是(item,index)in 数据
  • item和index可以结合其他指令一起使用
  • 数组长度的更新会同步到页面上,是响应式的

提示:大家记得引入vue


有两种版本,在开发的时候,建议使用开发环境,因为我们代码出错,它会给我们提示,如果项目上线,建议使用生产环境版本,因为它是压缩过了的,体积小。

结语:今天梳理了这些,明天再接再厉!希望大家也能够在前端学习的路上一起加油!