Vue一些入门指令和简单应用

79 阅读2分钟

使用vue 首先我们要认识到,vue是一个是构建用户界面的渐进式 JavaScript 框架. 它既然是一个基于JavaScript的框架,所以他的基本语法不会违背JS的规范.另外在学习Vue时我们也要认识到它自己独特的语法,我们作为Vue的使用者也要严格遵照它的规则.

今天我稍微总结一下工作中常用的基础Vue指令 1.创建Vue 实例对象


<div id="app">
//该盒子就是Vue控制的区域
    {{ msg }}
  </div>
const app = new Vue({
      // 指定 Vue 管理的区域
      el: '#app',
      // 数据
      data: {
        msg: 'Hello world!'
      }
    })
    

2.插值表达式 语法:{{ 表达式 }} 注意点:表达式 有值 ,不是语句

div id="app">
    <p>{{ nickname }}</p>
    <p>{{ nickname.substring(2) }}</p>
    <p>{{ age >= 18 ? '成年' : '未成年' }}</p>
    <p>{{ friend.name }} ---- {{ friend.desc }}</p>
    <!-- <p>{{ gender }}</p> -->
    <!-- <p>{{ if (age >= 18) { console.log(123) } }}</p> -->
    <!-- <a href="{{ url }}">去百度</a> -->
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        nickname: '王五',
        age: 15,
        friend: {
          name: '张三',
          desc: '热爱学习 Vue'
        },
        url: 'http://www.baidu.com'
      }
    })

3.v-html 设置标签内容 同获取标签.innerHTML 优先级高于标签内容

<div id="app">
    <div>{{ msg }}</div>
    <!-- 
      v-html: 设置元素的 innerHTML
      v-html="表达式"
      注意: 如果使用了 v-html 则标签内不能再写内容了, 会被 v-html 的结果覆盖掉
    -->
    <div v-html="msg">123</div>
    
     const app = new Vue({
      el: '#app',
      data: {
        msg: '<h1>献给每一个可爱的程序猿</h1>'
      }
    })

4.v-show 和v-if 控制元素显示和隐藏 原理:v-show 底层原理: 通过设置 display: none 来改变盒子的显示状态 v-if 底层原理: 通过创建 / 删除 DOM 元素来实现盒子的显示隐藏

<div id="app">
    <div v-show="isShow" class="box">我是v-show控制的盒子</div>
    <div v-if="isShow" class="box">我是v-if控制的盒子</div>
  </div>
  <script>
   const app = new Vue({

      el: '#app',

      data: {

        isShow: false

      }
  </script>
  

5.v-if 和 v-else 注意点: 必须紧挨着,中间不能插入其他元素标签

div id="app">
    <!-- 
      v-if 和 v-else 注意事项:
        v-else 必须紧贴着 v-if 来编写, 中间不能有任何标签间隔 (注释除外)
     -->
    <p v-if="gender === 1">性别:♂ 男</p>
    <!-- 你好我是注释 -->
    <!-- <br> -->
    <p v-else>性别:♀ 女</p>
    <hr>
    <p v-if="score >= 90">成绩评定A</p>
    <p v-else-if="score >= 70">成绩评定B</p>
    <p v-else-if="score >= 60">成绩评定C</p>
    <p v-else>成绩评定D</p>
  </div>
  <script>
   const app = new Vue({
      el: '#app',
      data: {
        gender: 2,
        score: 95
      }
    })
    </script>

6.v-on语法 后接绑定事件类型 下面以click事件为例子 v-on:事件名="内联语句" 适合极其简单的场景, 一行代码就搞定 v-on:事件名="事件处理函数" 适合复杂的逻辑处理 可以简写 @事件名="事件处理函数" 处理函数可以传参数 参数是实参

<div id="app">
<button @click="count--">-</button>
    <span>{{ count }}</span>
    <button @click="count++">+</button>
  </div>
  
  <script>
    // 目标: 点击 - 让数字减一, 点击 + 让数字加一
    const app = new Vue({
      el: '#app',
      data: {
        count: 100
      }
    })
  </script>

7.@click="事件处理函数" 事件处理函数写在 Vue实例 的属性methods里面

 const app = new Vue({
      el: '#app',
      data: {
        money: 100
      },
      methods: {
        buy(price) {
          // console.log('我买东西了')
          this.money -= price
        }
      }
    })

8.v-bind

v-bind: 动态设置标签属性的
      v-bind:属性名="表达式"
      可以简写:属性名="表达式"
      <div id="app">
      <img :src="imgUrl" :title="msg" alt="">
      <div>
      <script>
    const app = new Vue({
      el: '#app',
      data: {
        imgUrl: '图片路径',
        msg: 'hello world!'
      }
    })

  </script>

9.v-for="(每一项, 索引) in 数组" 配合v-bind:key="唯一的id" 使用方法

<div id="app">
    <h3>书架</h3>
    <ul>
<li v-for="(item, index) in booksList" :key="item.id">
        <input type="checkbox">
        <span>{{ item.name }}</span>
        <span>{{ item.author }}</span>
        <button @click="del(item.id)">删除</button>
      </li>
       </ul>
  </div>
  
  <script>
   const app = new Vue({
      el: '#app',
      data: {
        booksList: [
          { id: 1, name: '《红楼梦》', author: '曹雪芹' },
          { id: 2, name: '《西游记》', author: '吴承恩' },
          { id: 3, name: '《水浒传》', author: '施耐庵' },
          { id: 4, name: '《三国演义》', author: '罗贯中' }
        ]
      },
      methods: {
        del(id) {
          this.booksList = this.booksList.filter(item => item.id !== id)
        }
      }
    })
    </script>

10.v-model v-model 可以让数据和视图,形成双向数据绑定 1. 数据变化,视图自动更新 2. 视图变化,数据自动更新 可以快速获取或设置表单元素的内容

<div id="app">
账户:<input type="text" v-model="username"> <br><br>
 密码:<input type="password" v-model="password"><br><br>
 <button @click="login">登录</button>
 <button @click="reset">重置</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
<script>

 const app = new Vue({
   el: '#app',
   data: {
     username: '',
     password: ''
   },
   methods: {
     login() {
       console.log(this.username, this.password)
     },
     reset() {
       this.username = ''
       this.password = ''
     }
   }
 })
</script>