Vue学习笔记二:v-cloak,v-text,v-html的使用

越来越感觉,Vue学起来很有意思

v-cloak:解决插值表达式闪烁问题

先来写一个HTML,如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vae</title>
    

</head>
<body>
    
    <!-- 这个div就是MVVM中的V,View -->
    <div id="app">
        <p>{{ msg }}</p>
    </div>

    <script type="text/javascript" src="../lib/vue-2.6.10.js"></script>


    <script>
        // 这个vm就是MVVM中的VM,ViewModel
        var vm=new Vue({
         el: '#app',
        //  这个data就是MVVM中的M,Model
         data: {
            msg: '许嵩'
            }
        }) 
    </script>

</body>
</html>

可以看到,我把Vue.js的引用放到div下面了,这样是为了更好的重现插值表达式闪烁的情况。

安装插件Live Server

我要模拟网络环境,本地肯定不行,所以我们下载安装一个插件Live Server

看这个插件的开发者化的括号和箭头我就知道,这是一个有趣的人😂

右键以HTTP形式运行HTML

讲个好玩的东西,在浏览器可以模拟网速慢的情况,点击F12之后,可以把网络环境模拟为慢速3G,如图

很不错,现在你刷新一下就会看到浏览器上显示的先是{{ msg }},然后才是许嵩

{{ msg }}这个就是Vue的插值表达式,可以理解为占位符。为了不让这个插值表达式显示出来,我们可以使用v-cloak这个指令,加上v-cloak的HTML如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    
    

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

</head>
<body>
    
    <!-- 这个div就是MVVM中的V,View -->
    <div id="app">
        <p v-cloak>{{ msg }}</p>
    </div>

    <script type="text/javascript" src="../lib/vue-2.6.10.js"></script>


    <script>
        // 这个vm就是MVVM中的VM,ViewModel
        var vm=new Vue({
         el: '#app',
        //  这个data就是MVVM中的M,Model
         data: {
            msg: '许嵩'
            }
        }) 
    </script>

</body>
</html>

很明显,我改了两个地方,一个是p标签加了v-cloak,一个是在style样式里面写了,有v-cloak指令的就隐藏不显示。这样就达到了插值表达式隐藏的目的。

v-text:以属性方式使用插值表达式

这个v-text就厉害了,本身就解决了插值表达式的闪烁问题,因为他是使用的属性的方式。HTML再次修改如下:我只修改了div部分,其他的不贴了,没改其他部分

  <div id="app">

        <!-- v-cloak方式 -->
        <p v-cloak>{{ msg }}</p>

        <!-- v-text方式 -->
        <p v-text="msg"></p>
    </div>

你看看浏览器,效果是一模一样的,你把style里面的v-cloak注释了还会发现,v-cloak方式有闪烁,v-text方式没有闪烁。

v-cloak方式前后写的东西都会出现,v-text方式写的内容会被插值表达式覆盖,例如

    <div id="app">

        <!-- v-cloak方式 -->
        <p v-cloak>哈哈 {{ msg }} 许嵩来了</p>

        <!-- v-text方式 -->
        <p v-text="msg">许嵩说菜糊了不来了</p>
    </div>

我在两种方式的p元素内都加了文字,看看浏览器的效果


在加载中的时候,v-cloak方式由于被我隐藏了所以只有v-text方式显示了内容

但是一旦加载完Vue的js文件,v-cloak方式插值表达式前后的内容都会显示,而v-text方式里的内容会被覆盖

v-cloak和v-text的区别

  1. v-text本身解决了插值表达式闪烁的问题
  2. v-cloak显示前后内容,v-text会覆盖

v-html:解决html展示问题

修改的HTML如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    
    

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

</head>
<body>
    
    <!-- 这个div就是MVVM中的V,View -->
    <div id="app">

        <!-- v-cloak方式 -->
        <p v-cloak>哈哈 {{ msg }} 许嵩来了</p>

        <!-- v-text方式 -->
        <p v-text="msg">许嵩说菜糊了不来了</p>

        <!-- v-html方式 -->
        <p v-html="msg2"></p>
    </div>

    <script type="text/javascript" src="../lib/vue-2.6.10.js"></script>


    <script>
        // 这个vm就是MVVM中的VM,ViewModel
        var vm=new Vue({
         el: '#app',
        //  这个data就是MVVM中的M,Model
         data: {
            msg: '许嵩',
            msg2:"<h1>大家好,我是Vae</h1>"
            }
        }) 
    </script>

</body>
</html>

可以看到我的data里面写了一个新的msg2,内容确实HTML格式的,这种情况下只能使用v-html指令来展示

其他的方式展示的都是文本,只能使用v-html

防盗链接:本博客由蜀云泉发表

posted @ 2019-04-24 18:53  蜀云泉  阅读(1649)  评论(0编辑  收藏  举报