15.内置指令

v-text

v-text的作用和插值语法很像,但是插值语法更加灵活,可以替换掉标签内部分内容;v-text只能替换标签内的整个内容。

<body>
    <div id="root">
        <!-- 插值语法替换掉name -->
        <h2>你好,{{name}}</h2>
        <!-- v-text替换掉整个标签内容 -->
        <h2 v-text="str"></h2>
    </div>
</body>
<script>
    new Vue({
        el:"#root",
        data:{
            name:"世界",
            str:"hello, world"
        }
    })
</script>

显示结果:

image-20220421075638524

v-html

v-html的作用和v-text的作用很像,但是v-html可以解析内容中的html语法,但是这种解析会带来安全隐患。在网站上动态渲染任何html是非常危险的,容易导致XSS攻击,一定要在可信的内容上使用v-html,不要用在用户提交的内容上。

<body>
    <div id="root">
        <!-- v-html可以解析html, v-text不可以解析-->
        <h2 v-html="html"></h2>
        <h2 v-text="html"></h2>
    </div>
</body>
<script>
    Vue.config.productionTip = false
    new Vue({
        el:"#root",
        data:{
            html:"<h1> 我是h1 <h1>"
        }
    })
</script>

显示结果:

image-20220421080118439

v-cloak

v-cloak是一个特殊指令,没有值,也没有实际意义。通常用来配合css来实现解决网速慢的时候vue.js文件还没获取到时展示{{}}的问题,在Vue创建实例并接管容器后,会删掉v-cloak属性。

<style>
    /* 有v-cloak时不显示 */
    [v-cloak]{
        display:none;
    }
</style>

<body>
    <div id="root">
        <!-- v-cloak标签无实际意义,在VUE接管后,会去掉该属性 -->
        <h2 v-cloak>{{name}}</h2>
    </div>
</body>
<script>
    Vue.config.productionTip = false
    new Vue({
        el:"#root",
        data:{
            name:"世界",
        }
    })
</script>

v-once

v-once所在的节点在初次动态选然后,就视为静态内容,以后数据的改变不会引起v-once所在结构的更新,用于优化性能。

<body>
    <div id="root">
        <!-- v-once -->
        <h2 v-once>{{n}} </h2>
        <h2>{{n}} </h2>
        <button @click="n++">点我n+1</button>
    </div>
</body>
<script>
    Vue.config.productionTip = false
    new Vue({
        el:"#root",
        data:{
            n:1
        }
    })
</script>

显示效果:

image-20220421084507921

v-pre

跳过比所在节点的编译过程,在没有使用指令语法,插值语法的节点中,跳过节点编译,可以加快节点编译。

<body>
    <div id="root">
        <!-- v-pre -->
        <h2>{{name}}</h2>
        <!-- v-pre跳过了编译,因此显示{{name}} -->
        <h2 v-pre>{{name}}</h2>
    </div>
</body>
<script>
    Vue.config.productionTip = false
    new Vue({
        el:"#root",
        data:{
            name:"世界"
        }
    })
</script>

显示效果:

image-20220421084819249

总结

常用的内置指令

v-on 绑定事件监听,一般可以写成@
v-bind 绑定解析表达式
v-model 双向数据绑定
v-if 如果为true,当前标签才会输出到页面
v-else 如果为false,当前标签才会输出到页面
v-show 通过控制display样式来控制显示/隐藏
v-for 遍历数组/对象
v-text 更新元素的textContent
v-html 更新元素的innerHTML
v-cloak 配合css防止{{}}在VUE还没有加载的时候出现
posted @ 2022-04-22 00:33  GoodForNothing  阅读(22)  评论(0编辑  收藏  举报
//看板娘