vue(vue.js)—内置指令v-cloak、v-once、v-pre

原文链接:vue(vue.js)—内置指令v-cloak、v-once、v-pre – 每天进步一点点

1.v-cloak

情景:请求服务器资源的时候,服务器资源有可能延时响应,这时候,vue无法加载一些数据,比如下面这种情况,

 <div id="root">
      <div>你好,{{name}}<div>
 </div>

如果平常情况,这个是可以渲染数据的,但是如果从服务器上请求资源延迟响应,但是html还是要渲染,那么页面上只能渲染成下面这样:

这样让用户看到了。。。。

解决这个问题的办法一般有两个,第一个是给name赋初值,然后等请求的数据来了,再替换掉。

第二个就是今天要简单介绍的v-cloak。它的作用就是用来解决浏览器在加载页面时因存在事件差而产生的闪动问题,她的原理是先隐藏文件挂载位置,处理渲染好后在显示最终结果。而且这个一般配合css来使用。

比如下面这样写法:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>vue测试</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<style>
[v-cloak]{
display: none;
}
</style>
</head>
<body>
<div id="root">
<h3 v-cloak> 你好,{{name}}</h3>
</div>
<script type="text/javascript">
new Vue({
el: '#root',
})
</script>
</body>
</html>
2.v-once

作用比较单一,加在标签上可以保留原始值不变,比如数组之类的。参考代码:

<!DOCTYPE html>
<html lang="en">
 
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>vue测试</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
 
</head>
 
<body>
 
<div id="root">
<h3 v-once>初始化的n:{{n}}</h3>
<h3>变化后的n:{{n}}</h3>
<button @click="n++"> 点我n+1</button>
</div>
<script type="text/javascript">
new Vue({
el: '#root',
data:{
n:1,
}
})
</script>
</body>
 
</html>

效果:

可以看出,标签上加上这个v-once后, 标签里的值就保持原始值不变,其他的地方可以改变。

3.v-pre

v-pre指令就不解析插值语法这些,写的什么样,显示的就是什么样,比如上面的代码,我们加上v-pre后

  <div id="root">
         <h3 v-pre>初始化的n:{{n}}</h3>
         <h3 v-pre>变化后的n:{{n}}</h3>
         <button v-pre @click="n++"> 点我n+1</button>
    </div>

那么页面最终显示出来就是

 

posted on   longkui  阅读(59)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示