vue2个人总结(实时更新)

一. 初识Vue

1. hello vue

        原生js想必我们已不陌生,比如我们想展示一段信息

  <div id="message"></div>

  <script>
    let message = 'hello!!!'
    const m = document.getElementById("message")
    m.innerHTML = message
  </script>

        这种编程方式是命令式编程,缺点显而易见,缺乏灵活性和可扩展性,不适用于大型复杂的系统,而声明式编程来解决这个问题。下面用一段代码来简单表现vue这种声明式编程方式

<div id="app">{{message}}</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',  // 用于挂载要管理的元素
    data: {
      // 定义数据
      message: 'hello vue!'
    }
  })
</script>

2. vue的生命周期

        生命周期: 事物从诞生到消亡的整个过程

Vue的生命周期:

        指Vue实例从开始创建、初始化数据、编译模板、 挂载Dom→渲染、更新→渲染、卸载等一系列过程,应用过程中我们常会用到他的8个钩子函数,分别是创建前(beforecreate)、创建后(created)、挂载前(berofeMount),挂载后(mounted),更新前(beforeUpdate),更新后(updated )和 销毁前(beforeDestroy),销毁后(destroyed)

二. 插值操作

1. 文本

        数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值:

<span>Message: {{ message }}</span>

        mustache语法中,不仅仅可以直接写变量,也可以写简单的表达式,仅限作用与内容区,不能动态修改属性值

<h2>{{message}}, {{firstName + lastName}}</h2>

data: {
        message: "你好啊",
        firstName: "猪",
        lastName: "八戒"
      }

2. v-once

        v-once指令,当数据改变时,插值处的内容不会更新

<div id="app" v-once>{{message}}</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: 'hello vue!'
    }
  })
  app.message = '猪八戒'
// 显示hello vue!
</script>

3. v-html

        双大括号会将数据解释为普通文本,为了输出html代码,需要使用v-html指令

  <div id="app">
    <h2>{{url}}</h2> 
  <!-- <a href='https://www.baidu.com'>百度一下</a> -->

    <h2 v-html="url"></h2> 
   <!--   百度一下  -->
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {
        message: "你好啊",
        url: "<a href='https://www.baidu.com'>百度一下</a>"
      }
    })

        但是建议不要这样做,因为它很容易导致 XSS 攻击。请只对可信内容使用 HTML 插值,绝不要对用户提供的内容使用插值。

4. v-text

        显示文本,一般不用,因为不够灵活,会覆盖掉原本的文本内容

  <div id="app">
    <h2>{{message}}, 猪八戒</h2> 
<!-- 你好啊,猪八戒 -->

    <!-- 一般不用,不够灵活,会覆盖掉文本内容 -->
    <h2 v-text="message">猪八戒</h2>  
<!-- 你好啊 -->
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {
        message: "你好啊"
      }
    })

5. v-pre

        不解析"Mustache"语法,将其原封不动的显示出来

  <div id="app">
    {{message}}
    <h2 v-pre>{{message}}</h2>
    <!-- {{message}} -->
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {
        message: "你好啊"
      }
    })

6. v-cloak

        这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。

  <style>
    [v-cloak] {
      display: none;
    }
  </style>

  <div id="app" v-cloak>{{message}}</div>

  <script src="../js/vue.js"></script>
  <script>
    setTimeout(() => {
      const app = new Vue({
        el: "#app",
        data: {
          message: "你好啊"
        }
      })
    }, 1000);
  </script>

三. 动态绑定属性

1. v-bind基本使用

        除了内容需要动态来决定外,某些属性我们也希望动态来绑定,比如,动态绑定a元素的href属性、动态绑定img元素的src属性,{{}}无法动态绑定动态属性,这个时候我们需要使用v-bind指令

<img v-bind:src="imgURL" alt="">

<!-- 语法糖的写法 -->
<a :href="aHref">超链接</a>

2. 动态绑定class

     对象语法:

我们可以传给v-bind:class一个对象,来实现动态切换class,如:

<div v-bind:class="{ active: isActive }"></div>

  上面的语法表示active这个class存在与否将取决于属性值isActive是否为true,可以在对象中传入更多字段来动态切换多个class。此外,v-bind:class指令也可以与普通的class属性共存。如:

<div
  class="static"
  v-bind:class="{ active: isActive }"
></div>

   了解上述基本知识后,可以做一个小练习,点击按钮切换字体颜色

  <style>
    .active {
      color: #fba
    }
  </style>

  <div id="app">
    <h2 :class="{active: isActive}">{{message}}</h2>
    <button @click="changeColor">切换颜色</button>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {
        message: "你好啊",
        isActive: false
      },
      methods: {
        changeColor() {
          this.isActive = !this.isActive
        }
      }
    })
  </script>

数组语法:

我们可以把一个数组传给v-bind:class ,以此来实现一个class列表,不常用

<div v-bind:class="[activeClass, errorClass]"></div>

data: {
  activeClass: 'active',
  errorClass: 'text-danger'
}

3. 补充v-for&v-for和v-bind结合小练习

v-for循环遍历,比如创建一个列表

  <div id="app">
    <ul>
      <li v-for="item in anime">{{item}}</li>
    </ul>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {
        anime: ['进击的巨人', '海贼王', '火影忍者', '龙珠']
      }
    })
  </script>

练习需求: 点击列表中的哪一项,那么该项的文字变成红色

  <style>
    .actice {
      color: #fba;
    }
  </style>

  <div id="app">
    <ul>
      <li v-for="(item, index) in anime"
          :class="{actice: isActive === index}"
          @click="changeColor(index)" 
      >{{item}}</li>
    </ul>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {
        anime: ['进击的巨人', '海贼王', '火影忍者', '龙珠'],
        isActive: 0
      },
      methods: {
        changeColor(index) {
          this.isActive = index
        }
      }
    })

4. 动态绑定style

对象语法:

v-bind:style的对象语法看起来像CSS,但其实是给一个JS对象。CSS属性名可以用驼峰式或短横线分隔来命名

   <div id="app">
    <!-- <h2 :style="{key(属性名): value(属性值)}">{{message}}</h2> -->
    <!-- '50px'必须加上单引号,否则是当做一个变量去解析 -->
    <!-- <h2 :style="{fontSize: '50px'}">{{message}}</h2> -->

    <!-- finalSize当成一个变量使用 -->
    <!-- <h2 :style="{fontSize: finalSize}">{{message}}</h2> -->

    <h2 :style="{fontSize: finalSize + 'px'}">{{message}}</h2>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {
        message: "你好啊",
        finalSize: 100
      }
    })
  </script>

数组语法:

v-bind:style 的数组语法可以将多个样式对象应用到同一个元素上:

<div v-bind:style="[baseStyles, overridingStyles]"></div>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值