Vue指令使用指北(二)显示指令 v-text v-html v-pre v-clock

81 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天,点击查看活动详情

上一章,我们介绍了Vue指令中的绑定指令v-model和v-bind。这一章,我们继续介绍Vue中的显示内容的指令。

1 v-text 文本渲染指令

我们知道在Vue的template节点中,使用插值表达式{{ showText}},可以渲染data中的定义的变量值。v-text指令,则是渲染数据的另外一种方式,如下:

M层:

 data: {
     showText: 'Hello 掘金'
 }

V层:

 <!-- 1.插值表达式 -->
 <h1>{{ showText }}</h1>
 <!-- 2.v-text指令 -->
 <h1 v-text="showText"></h1>

运行代码,发现用两种方式渲染数据的运行结果相同。

image-20220807174318297

2 v-html 富文本渲染指令

v-text指令只能渲染普通的字符串,而不能渲染复杂数据(如富文本)。使用v-html指令可以渲染富文本,如下:

M层:

 data() {
     return {
         showText: '<h1> 你好,掘金</h1>'
     }
 },

V层:

 <h1 v-html="showText"></h1>

渲染效果如下:

image-20220807174459509

那么插值表达式、v-text和v-html都是渲染M层data里的数据,它们的区别在于:

  1. 插值表达式和v-text指令均不可渲染富文本。
  2. v-text和v-html在V层不能继续添加文本内容,而插值表达式可以继续添加文本。如下:
 <h1> {{showText}} 此处仍可添加本文,正常显示</h1>
 <h1 v-text="showText">此处本文不显示</h1>
 <h1 v-html="showText">此处本文不显示</h1>

3 v-pre 原样渲染指令

v-pre指令是直接渲染内容,而跳过编译过程,使用方法是直接在标签上,添加v-pre,无需赋值给它,举例:

M层:

 data() {
     return {
         showText: '你好,掘金'
     }
 },

V层:

 <h1> {{ showText }}</h1>
 <h1 v-pre>{{ showText }}</h1>

第二行h1使用v-pre以后,我们会发现Vue未对插值表达式{{ showText }}进行解析,而是原样输出。如图所示:

image-20220807175349893

4 v-cloak指令

在快速刷新页面或网速较慢时,vue不能立即渲染,会在页面展示其源代码:

image-20220807195227387

当网速过慢时,浏览器显示的是Vue的源代码,对于用户来说,这是一种不友好的展现形式,所以在实现Vue项目之前,我们可以使用v-cloak指令,在Vue数据渲染完成之前,隐藏源代码:

 <!DOCTYPE html>
 <html lang="en">
 <head>
   <meta charset="UTF-8">
   <title>Document</title>
   <style type="text/css">
   [v-cloak]{
     display: none;
   }
   </style>
 </head>
 <body>
   <div id="app">
     <div v-cloak>{{msg}}</div>
   </div>
   <script type="text/javascript" src="js/vue.js"></script>
   <script type="text/javascript">
  
     var vm = new Vue({
       el: '#app',
       data: {
         msg: 'Hello Vue'
       }
     });
   </script>
 </body>
 </html>

注意,需要在css样式中,设置[v-cloak]的display属性为none,这样就避免了网速过慢引起的显示源代码的情况了。