Vue2.js学习笔记-02(基本指令v-cloak、v-text、v-html、v-bind、v-on学习)

一、回顾

在vue的Hello World程序的学习中,页面获取值的表达式为“{{}}”, 但这个插值表达式会存在一定的问题,当我们网速很慢的情况下,页面会优先渲染"{{ 数据所对应的key }}",怎么看到这个效果呢,F12打开谷歌浏览器的开发者工具,按照下图把网络设置为3G

 然后把如下代码放入到html文件中,在浏览器打开

<body>
    <div id="app-1">{{ msg }}</div>

    <script src="../js/vue2.6.10.js"></script>
    <script>
        //创建vue实例
        var vm1 = new Vue({
            el:"#app-1", 
            data:{      
                msg: "Hello Vue!"
            }
        });
    </script>
</body>

这样就可以看到,当页面在加载的时候,先渲染的是{{msg}},一直等到页面数据加载完毕,页面上才会把msg替换为对应的data数据,我们设想一下,假如我们自己作为用户,看到这样的情况,是不是会吐槽这网站怎么这么垃圾!

二、Vue基本指令学习

1、v-cloak指令可以解决上述问题,代码如下:

<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>Vue基本指令</title>
    <style>
        [v-cloak]{
            display: none;
        }
    </style>
</head>
<body>
    <div id = "app">
        <!-- 给p标签添加v-cloak并且添加css样式 -->
        <p v-cloak>{{ msg }}</p> 
    </div>

    <script src="../js/vue2.6.10.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                msg: "哈哈哈"
            }
        })
    </script>

</body>
</html>

2、v-text指令也可以用来渲染数据,同样也可以解决回顾中的问题

<body>
    <div id = "app">
        <!-- 给p标签添加v-cloak并且添加css样式 -->
        <p v-cloak>{{ msg }}</p> 

        <!-- 使用v-text指令渲染数据 -->
        <span v-text="msg"></span> 
    </div>

    <script src="../js/vue2.6.10.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                msg: "哈哈哈"
            }
        })
    </script>
</body>

还有一种情况,如下

<body>
    <div id = "app">
        <!-- 给p标签添加v-cloak并且添加css样式 -->
        <!-- 插值表达式会把数据渲染在标签内容的中间,相当于占位符的性质 -->
        <p v-cloak>aaaaaa{{ msg }}aaaaa</p> 

        <!-- v-text会覆盖标签中的数据 -->
        <!-- 使用v-text指令渲染数据 -->
        <span v-text="msg">aaaaaaa</span> 
    </div>

    <script src="../js/vue2.6.10.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                msg: "哈哈哈"
            }
        })
    </script>
</body>

3、v-html指令可以用于渲染文本,html代码(插值表达式和v-text会将html代码作为普通文本渲染)

<body>
    <div id = "app">
        <!-- 给p标签添加v-cloak并且添加css样式 -->
        <!-- 插值表达式会把数据渲染在标签内容的中间,相当于占位符的性质 -->
        <p v-cloak>aaaaaa{{ msg }}aaaaa</p> 

        <!-- v-text会覆盖标签中的数据 -->
        <!-- 使用v-text指令渲染数据 -->
        <span v-text="msg">aaaaaaa</span> 
        <br>
        <!-- v-html渲染代码 -->
        <span v-html="htmlData"></span>
        <br>
        <!-- v-html渲染普通文本,同样也会覆盖标签中的内容 -->
        <span v-html="msg"></span>
    </div>

    <script src="../js/vue2.6.10.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                msg: "哈哈哈",
                htmlData:"<h3>我是html代码!</h3>"
            }
        })
    </script>
</body>

4、v-bind指令,可以把标签中的属性与vue实例属性进行绑定,并且与vue属性绑定后,其值可以是一个合法的JS表达式

<body>
    <div id = "app">
        <!-- 给p标签添加v-cloak并且添加css样式 -->
        <!-- 插值表达式会把数据渲染在标签内容的中间,相当于占位符的性质 -->
        <p v-cloak>aaaaaa{{ msg }}aaaaa</p> 

        <!-- v-text会覆盖标签中的数据 -->
        <!-- 使用v-text指令渲染数据 -->
        <span v-text="msg">aaaaaaa</span> 
        <br>
        <!-- v-html渲染代码 -->
        <span v-html="htmlData"></span>
        <br>
        <!-- v-html渲染普通文本,同样也会覆盖标签中的内容 -->
        <span v-html="msg">啊啊啊</span>
        <br>
        <!-- v--bind将alt属性与vue实例属性进行绑定 -->
        <img src="" v-bind:alt="imageName" />
        <br>
        <!-- v--bind将alt与vue属性绑定后,其值可以是一个合法的JS表达式 -->
        <img src="" v-bind:alt="imageName + '拼接字符串'" />
        <br>
        <!-- v--bind简写,只需要在想要绑定的属性前加一个冒号 -->
        <img src="" :alt="imageName + '简写方式绑定'" />
    </div>

    <script src="../js/vue2.6.10.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                msg: "哈哈哈",
                htmlData:"<h3>我是html代码!</h3>",
                imageName:"我是图片"
            }
        })
    </script>
</body>

5、v-on指令,绑定事件

<body>
    <div id = "app">
        <!-- 给p标签添加v-cloak并且添加css样式 -->
        <!-- 插值表达式会把数据渲染在标签内容的中间,相当于占位符的性质 -->
        <p v-cloak>aaaaaa{{ msg }}aaaaa</p> 

        <!-- v-text会覆盖标签中的数据 -->
        <!-- 使用v-text指令渲染数据 -->
        <span v-text="msg">aaaaaaa</span> 
        <br>
        <!-- v-html渲染代码 -->
        <span v-html="htmlData"></span>
        <br>
        <!-- v-html渲染普通文本,同样也会覆盖标签中的内容 -->
        <span v-html="msg">啊啊啊</span>
        <br>
        <!-- v--bind将alt属性与vue实例属性进行绑定 -->
        <img src="" v-bind:alt="imageName" />
        <br>
        <!-- v--bind将alt与vue属性绑定后,其值可以是一个合法的JS表达式 -->
        <img src="" v-bind:alt="imageName + '拼接字符串'" />
        <br>
        <!-- v--bind简写,只需要在想要绑定的属性前加一个冒号 -->
        <img src="" :alt="imageName + '简写方式绑定'" />
        <br>
        <!-- 使用v-on绑定点击事件 -->
        <!-- alert为vue实例中方法的名称 -->
        <input type="button" value="点我弹框" v-on:click="alert"/>
        <br>
        <!-- v-on简写方式,在事件名称前加“@” 符号 -->
        <input type="button" value="点我弹框" @click="alert"/>
    </div>

    <script src="../js/vue2.6.10.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                msg: "哈哈哈",
                htmlData:"<h3>我是html代码!</h3>",
                imageName:"我是图片"
            },
            methods: { //定义vue实例中的方法
                // alert: function(){
                //     alert("哈哈哈");
                // },
                alert(){
                    alert("哈哈哈");
                }
            },
        })
    </script>
</body>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值