Vue基本指令

vue-day01

vue的优点

易用,灵活,高效

库与框架区别

库:只具有某一种功能

框架:具备完整的功能 bootstrap element-ui

开发环境与生产环境

开发环境地址:<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

生产环境地址:<script src="https://cdn.jsdelivr.net/npm/vue"></script>

vue特点

数据驱动 组件化 单页面应用

vue中指令(text)

v-text:与原生的innerText一致,只识别字符串

v-html:与原生的innerHTML一致,可以识别标签

vue中指令与插值的使用

插值表达式后面的内容会展示

通过指令绑定元素之间的内容不会显示

vue中指令(if)

v-if v-else-if v-else 如果......否则......

vue中的指令(show)

两者区别:

1.v-if是动态的向dom树中添加、删除元素

v-show通过设置css样式来实现

2.v-if是真实创建其具有惰性,如果初始值是false则不会渲染,同时也不会被缓存

v-show:无论初始值是否真假都会先渲染

总结:如果需要频繁切换需要用v-show

vue中的方法使用(v-on)

let vm = new Vue({
    el:'#app',
    data:{
        name:'宏超'
    },
   // 所有的方法存放在methods中
    methods: {
        say(name){
          alert('hi,'+name)
        },
        say2(){
            console.log(this)
           console.log('hi,'+this.name)
        }
    },
})
直接使用 {{say2()}} 调用
<body>
   <div id="app">
           <div @click = 'alertName'>点击实现效果</div>
           <div @click = 'alertName2("褚阳森")'>点击实现效果</div>
           <div @click = 'num++'>点击实现效果</div>
          {{num}}
   </div>
</body>
<script src="./vue.js"></script>
<script>
   let vm = new Vue({
       el:'#app',
       data:{
           name:'志宝',
           num:0
      },
       methods: {
           alertName(){
               alert(this.name)
          },
           alertName2(name){
               alert(name)
          }
      },
  })
</script>

注意:v-on:click='方法名' 可以简写为:@click='方法名'

1.绑定事件的另种方式:a.直接写方法名 b.直接写表达式(一般常用简单的表达式)

v-for(数组)

<body>
   <div id="app">
       <span v-for='item in arr'>{{item}}</span>
       <p v-for='(item,index) in arr'>{{index}}-----{{item}}</p>
   </div>
</body>
<script src="./vue.js"></script>
<script>
   let vm = new Vue({
       el:'#app',
       data:{
          arr:['苹果','香蕉','橘子','榴莲']
      },
       methods: {
         
      },
  })
</script>

注意点: v-for 循环数组可以传递2个参数,第一个是数组的每一项,第二个是数组的索引

v-for(对象)

<body>
   <div id="app">
       <span v-for='item in objs'>{{item}}</span>
       <p v-for='(value,key,index) in objs'>{{key}}-----{{value}}-------{{index}}</p>
   </div>
</body>
<script src="./vue.js"></script>
<script>
   let vm = new Vue({
       el:'#app',
       data:{
         objs:{
             '水果':'苹果,香蕉,橘子',
             '蔬菜':'小白菜,土豆,芹菜'
        }
      },
       methods: {
         
      },
  })
</script>

注意:循环对象的时候,传递三个参数,分别代表value,key,index 位置不可以更换

v-bind绑定属性

<body>
   <div id="app">
       <!-- v-bind:msg 这是自定义指令,只能在元素中查看,可以作为某一项操作的标识 -->
       <a v-bind:href="href" v-bind:title="title" v-bind:msg='msg'>点击跳转</a>
       <a :href="href" :title="title"  :msg='msg'>点击跳转</a>
       <!-- <img src="" alt=""> -->
   </div>
</body>
<script src="./vue.js"></script>
<script>
   let vm = new Vue({
       el: '#app',
       data: {
           href:'https://www.baidu.com',
           title:'我是标题1111',
           msg:'hello'
      },
       methods: {

      },
  })
</script>

注意:v-bind:title='abc' 可以简写为 :title:'abc'

动态绑定样式class

<body>
   <div id="app">
       <!-- 这是普通的添加样式 -->
     <div class="box">我是普通样式渲染</div>
     <!-- 通过绑定类名的方式 -->
     <div :class="className">我是第一种样式渲染</div>
     <!-- 通过对象的方式 -->
     <div :class="objClass">我是第二种样式渲染</div>
     <!-- 通过三元表达式 -->
     <div :class="[1==1?'blue':'yellow']">我是第三种样式渲染</div>
     <!-- 通过拼接实现 -->
     <div :class='"yellow " + font'>我是第四种样式渲染</div>
     <div :class='"yellow " + "font"'>我是第四种样式渲染</div>
     <!-- <div class="pink font"></div> -->
   </div>
</body>
<script src="./vue.js"></script>
<script>
   let vm = new Vue({
       el: '#app',
       data: {
          className:'pink',
          objClass:{
               'orange':true,
               'font':true,
          },
          font:'font'
      },
       methods: {
         
      },
  })
</script>

注意:普通情况用第一种和普通绑定即可,如果后期需要动态添加那么就需要用到第四种

动态绑定style

<body>
   <div id="app">
       <!-- 普通的通过style绑定 -->
      <div :style="{background:bgcolor,color:color}">我是通过style来设置的</div>
      <!-- 通过对象的方式绑定样式 -->
      <div :style='styleObj'>我是第二种通过style绑定</div>
       <!-- 通过数组的方式绑定多个样式 -->
      <div :style='[styleA,styleB]'>我是第三种通过style绑定</div>
   </div>
</body>
<script src="./vue.js"></script>
<script>
   let vm = new Vue({
       el: '#app',
       data: {
           bgcolor:'#000000',
           color:'#ffffff',
           styleObj:{
               fontSize:'40px',
               color:'red',
               background:'yellow'
          },
           styleA:{
               color:'green',
          },
           styleB:{
               fontSize:'30px',
          }
      },
       methods: {
         
      },
  })
</script>

注意:如果需要绑定多个样式,需要用对象的方式,如果需要绑定多个类名,需要用数组的方式

posted @ 2020-10-09 20:43  覅#  阅读(258)  评论(0)    收藏  举报