Vue总结

Vue直接导入总结

Vue是一个前端框架,我学习Vue的主要目前其实是想使用Element-UI框架。

这里推荐两个资源:

第一个Vue程序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<div id="app">
    {{ message }}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var app =new Vue({
        el:"#app",
        data:{
            message:"hello Vue!"
        }
    })
</script>
  • el : 挂载点
  • data: 数据,里面也可以放数组,对象等

vue指令

  • v-text指令的作用:设置标签的内容
  • v-html指令的作用是:设置元素的innerHTML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<h2 v-text = "message">北京</h2>
<h2>{{ message+"!" }}深圳</h2>
<p v-html="content"></p>

<script>
   var app=new Vue({
       el:"#app",
       data:{
         message:"嘿嘿嘿",
         content:"<a href='https://mp.csdn.net/console/home'>黑马</a>"  
       }
   })
</script>
  • v-on指令基础:点击就触发(单机、双击,按键)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<button @click="sub">-</button>

<input type="text" @keyup.enter="sayHi">

<script>
   var app=new Vue({
       el:"#app",
       data:{
         num:1
       },
       methods:{
           sub:function(){
              console.log("sub");
           }
       }
   })
</script>
  • v-show、v-if指令:元素的显示与隐藏、v-if操作DOM树开销大
1
2
3
4
5
<img v-show="isShow" src="./1.jpg">
<img v-show="age>=18" src="./1.jpg">

<p v-if="true">我是一个p标签</p>
<p v-if="isShow">我是一个p标签</p>
  • v-bind指令:为元素绑定属性、需要动态的增删class建议使用对象的方式
1
2
<img :src="imgSrc" :title="imgTitle+'显示'" :class="isActive?'active':''" @click="toggleActive">
<img :src="imgSrc" :title="imgTitle+'显示'" :class="{active:isActive}" @click="toggleActive">
  • v-for指令:循环
1
2
3
4
5
6
<li v-for="(item,index) in arr" :title="item">
  {{ index }}{{ item }}
</li>
<li v-for="(item,index) in objArr">
  {{ item.name }}
</li>
  • v-model:双向绑定数据
1
2
3
4
5
6
7
8
9
<input type="button" v-model="message" />

<script>
var app=new Vue({
  el:"#app",
  data:{
    message:"沙丁鱼"
  },
</script>

网络应用axios

注意点

  • axios回调函数中this指向改变了,需要额外的保存一份
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

# axios.get(地址?key=value&key2=values).then(function(response){},function(err){})
# 示例
search : function(){
    var that = this;
    axios.get("https://autumnfish.cn/search?keywords=" + this.keyword).then(function(response){
        console.log(response)
        that.music_arr = response.data.result.songs
    }, function(err){
        console.log(err)
    })
},

# axios.post(地址,{key:value,key2:value2}).then(function(response){},function(err){})
# 示例
Mpost : function(){
    axios.post("https://autumnfish.cn/api/user/reg",{username:"222阿香3"})
    .then(function(response){
        console.log(response);
    },function(err){
        console.log(err);
    })
},

关于HTML标签的使用

1
2
3
4
5
6
7
8
# 链接触发javascript
<a href="javascript:;" @click="changeCity('北京')">北京</a>

# audio使用
<audio v-bind:src="MusicUrl" ref="audio" controls autoplay loop @play="play" @pause="pause"></audio>

# video使用
<video v-bind:src="MvUrl" controls="controls"></video>
updatedupdated2022-05-072022-05-07