Vue.j--内置指令(v-cloak、v-once、v-show)

v-cloak:

v-cloak不需要表达式,它会在Vue实例结束编译时从绑定的HTML元素上移除,经常和CSS的display:none;配合使用:

<div id="app" v-cloak>
    {{message}}
</div>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            message: 'hello world'
        }
    });
</script>

这时虽然已经加了指令v-cloak,但其实并没有起到任何作用,当网速较慢、Vue.js文件还没有加载完成时,在页面上会显示{{message}}的字样,直到Vue创建实例、编译模板时,DOM才会被替换,所以这个过程屏幕是由闪动的。只要加一加CSS就可以解决这个问题:

[v-cloak] {
	display: none;
}

**在一般情况下,v-cloak是一个解决初始化慢导致页面闪动的最佳实践,**对于简单的项目很实用,但是在具有工程化的项目里不再使用。

v-once:

v-once也是一个不需要表达式的指令,作用是定义它的元素或组件只能渲染一次,包括元素或组件的所有子节点。首次渲染后不再随数据的变化重新渲染将被视为静态内容,例如:

<div id="myapp">
    <span v-once>{{str}}</span>
    <div v-once>
        <span>{{str}}</span>
    </div>
</div>
<script>
    var myApp = new Vue({
        el: '#myapp',
        data: {
            str: '测试文本'
        }
    });
</script>
v-show:

v-show的用法与v-if基本一致,不过v-show是改变元素的CSS属性display。当v-show表达式的值为false时,元素会隐藏,查看DOM结果会看到元素上加载了内联样式display:none;

<div id="myApp">
    <p v-show="status === 1">当status为1时显示该行</p>
</div>
<script>
    var myApp = new Vue({
        el: '#myApp',
        data: {
            status: 2
        }
    });
</script>
v-if与v-show的区别

v-if与v-show具有类似的功能,不过v-if才是真正的条件渲染,它会根据表达式适当地销毁或重建元素及绑定的事件或子组件。若表达式初始值为false,则一开始元组/组件并不会渲染,只有当条件第一次变为真时才开始编译。

而v-show只是简单的将CSS切换,无论条件真与否,都会被编译相比之下,v-if更适合条件不经常改变的场景,因为它切换开销相对较大,而v-show适用于频繁切换的条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值