Vue学习笔记之Vue插值的操作

秋招过后,意识到自己的不足,最近又重新复习了一下codewhy老师的Vue,今天跟大家分享一下Vue插值的操作


一、Mustache语法

我们使用Vue的时候,想要将data里面定义的数据放到HTML里面来显示,这时候就会用到我们的Mastache语法,也就是双大括号{{}}的一个用法

示例:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>

  <body>
    <div id="app">
      <h3>{{name}}</h3>
      <h3>{{firstname + lastname}}</h3>
      <h3>{{count*10}}</h3>
    </div>
    <script src="../js/vue.js"></script>
    <script>
      var app = new Vue({
        el: '#app',
        data: {
          name: 'XWen',
          firstname: 'X',
          lastname: 'Wen',
          count: 0,
        },
        methods: {},
      })
    </script>
  </body>
</html>

在这里插入图片描述
可以看到Mastache语法除了我们常见的{{}}用法外,还可以写简单的表达式

二、v-once指令的用法

由于Vue是响应式的,数据改变相应的界面也会改变,但是有时候,我们在开发的过程中可能会遇到这种需求,就是我们只希望数据第一次拿出来展示,之后数据的改变不让他进行变化,那我们就可以用v-once

示例:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>

  <body>
    <div id="app">
      <h3>{{name}}</h3>
      <h3 v-once>{{name}}</h3>
    </div>
    <script src="../js/vue.js"></script>
    <script>
      var app = new Vue({
        el: '#app',
        data: {
          name: 'Xwen',
        },
        methods: {},
      })
    </script>
  </body>
</html>

在这里插入图片描述

我们在浏览器控制台中,改变name的值,按理来说,这里的值应该都会改变才对,但是此时我们发现加了v-once的h3标签内的name值没有改变,这就印证了v-once的用法

三、v-html指令的用法

有时候,服务器返回给我们的data数据很可能是html格式的,如果我们继续用Mastache的一个语法的话,就会把它当成字符串来解析,这样就不太好,我们希望它以html的格式直接解析出来,这就要用到v-html

示例:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>

  <body>
    <div id="app">
      <h3>{{url}}</h3>
      <h3 v-html="url"></h3>
    </div>
    <script src="../js/vue.js"></script>
    <script>
      var app = new Vue({
        el: '#app',
        data: {
          url: '<a href="https://www.baidu.com">百度一下</a>',
        },
        methods: {},
      })
    </script>
  </body>
</html>

在这里插入图片描述

可以看到,我们使用了v-html之后他会把data里面的数据当成html来进行解析,就可以满足我们的需求,而使用Mastache语法就是以字符串的形式解析

四、v-text指令的用法

v-text指令的话用起来跟我们直接用Mastache语法差不多,而且它还比较不灵活,比较少用了解即可

示例:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>

  <body>
    <div id="app">
      <h2>{{name}}是我的名字</h2>
      <h2 v-text="name">是我的名字</h2>
    </div>
    <script src="../js/vue.js"></script>
    <script>
      var app = new Vue({
        el: '#app',
        data: {
          name: 'Xwen',
        },
        methods: {},
      })
    </script>
  </body>
</html>

在这里插入图片描述
可以看到就是,我们如果想要在后面跟点什么就不行了,会覆盖掉,所以有些鸡肋这个指令

五、v-pre指令的用法

有时候我们不希望Vue帮我们解析,就是展示原来的样子,这时候就可以用v-pre指令

示例:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>

  <body>
    <div id="app">
      <h3>{{name}}</h3>
      <h3 v-pre>{{name}}</h3>
    </div>
    <script src="../js/vue.js"></script>
    <script>
      var app = new Vue({
        el: '#app',
        data: {
          name: 'Xwen',
        },
        methods: {},
      })
    </script>
  </body>
</html>

在这里插入图片描述

可以看到就是下一个name没有解析出来因为这里使用了v-pre,所以它就是不让Vue去解析,展示原本的样子也就是标签里面放字符串渲染出来

六、v-cloak指令的用法

我们都知道浏览器是从上到下执行我们的html代码的,所以有时候可能我们的js代码卡住了还没来得及渲染就会有Mastache语法标签一闪而过的画面,这时我们就得通过v-cloak指令解决一下

示例:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>

  <body>
    <div id="app">
      <h3>{{name}}</h3>
    </div>
    <script src="../js/vue.js"></script>
    <script>
      setTimeout(function () {
        var app = new Vue({
          el: '#app',
          data: {
            name: 'Xwen',
          },
          methods: {},
        })
      }, 1000)
    </script>
  </body>
</html>

在这里插入图片描述
这里我们采用setTimeout来模拟js代码卡住的场景

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <style>
      [v-cloak] {
        display: none;
      }
    </style>
  </head>

  <body>
    <div id="app">
      <h3 v-cloak>{{name}}</h3>
    </div>
    <script src="../js/vue.js"></script>
    <script>
      setTimeout(function () {
        var app = new Vue({
          el: '#app',
          data: {
            name: 'Xwen',
          },
          methods: {},
        })
      }, 1000)
    </script>
  </body>
</html>

在这里插入图片描述
使用了v-cloak之后我们发现,即便是js代码有时候卡住了,也是慢一点显示出来,Mastache标签不会显示出来,v-cloak的原理就是Vue解析之前,元素会有v-cloak这个属性,解析后会消失,所以巧妙解决了这个一闪而过的问题


总结

以上就是今天要跟大家分享的Vue插值的操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值