vue中的v-if和v-show的区别详解


Posted in Javascript onSeptember 01, 2019

v-if和v-show的区别是前端面试中常问的基础知识点,v-if、v-show顾名思义就是用来判断视图层展示效果的。那么具体是怎么展示呢?v-if和v-show的区别又是什么呢?

首先我们可以来看一下Vue中文社区说明文档的介绍:

vue中的v-if和v-show的区别详解

Vue中文社区说明文档中简单来说是:初始渲染的时候进行条件判断展示;

在实际开发中我们会经常使用到v-if和v-show来进行判断展示,我们可以这么理解:

<div class="tc" v-if="pload && list.length<1" >
  <img src="../assets/img/mall_none_order.png" />
</div>

上面的实例中,v-if的作用是通过pload和list.length是否<1来判断这个div是否展示,因为是并且关系,只有当pload和list.length<1两个成立都成立的时候这个div和里面的img才展示和生效,

反之如果判断条件不成立的时候,v-if则不会展示;

<div class="tc" v-show="pload && list.length<1" >
  <img src="../assets/img/mall_none_order.png" />
</div>

上面的案例代码我们其实也可以换成v-show来进行判断,视觉效果也是一样的;注意: 只是视觉效果是一样的,两者之间不是等于的关系(后面来进行分析);用v-show来判断条件pload为真并且list.length<!的时候才成立,div和div里面的img标签才生效;

上面说到v-if和v-show都能实现根据判断条件进行展示的效果,但是这不代表这两者是等于的关系;仅仅只是视觉效果相同而已,下面我们来讲讲v-if和v-show的区别及注意事项:

vue中的v-if和v-show的区别详解

使用v-if,我们可以注意到浏览器并没有渲染到元素class为tc的div,这是由于v-if只有当判断条件为真时,浏览器才会生成标签并在浏览中渲染,反之判断条件为假时,浏览器将不会生成标签更不会渲染。

那么我们可以想想,在条件为假的时候浏览器不生成标签不渲染,条件为真的时候浏览器才渲染,这样是不是很消耗页面性能呢?

假如我们的判断条件不只有一种场景而是有多种场景呢?那么这时怎么办呢?Vue给我们提供了v-else指令,v-else是v-if的专属指令,v-else只能和v-if一起连用;

vue中的v-if和v-show的区别详解

如果我们使用v-show进行判断渲染,则div标签和里面的img是会生成并渲染的,但是我们注意到浏览器在我们的内联样式中添加了display:none属性,所以实质上v-show标签是存在的,只是浏览器帮我们隐藏了而已;实际上浏览器只是根据判断条件在更改内联样式,条件为真的时候内联样式display:block;条件为假的时候内联样式更改为display:none; v-show实际上比v-if的性能更高,因为v-show只是动态的更改样式而不需要增删DOM元素,但是遇到多种情况分支判断的时候v-show是不能和v-else连用的,碰到这种场景使用v-show的处理办法就是重新再用v-show写另外的逻辑判断;

总结:

(1)、v-if和v-show用于视图层进行条件判断视图展示

(2)、v-if的原理是根据判断条件来动态的进行增删DOM元素,v-show是根据判断条件来动态的进行显示和隐藏元素,频繁的进行增删DOM操作会影响页面加载速度和性能,由此我们可以得出结论:

当您的项目程序不是很大的时候,v-if和v-show都可以用来进行判断展示和隐藏(这种场景使用v-if只是影响不大,并不是没有影响);

当您的项目程序比较大的时候,不推荐使用v-if来进行判断展示和隐藏,推荐使用v-show;

 (3)、只有v-if能和v-else连用进行分支判断,v-show是不能和v-else连用的,如果出现多种条件场景的情况下,可以使用v-if来进行判断

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery中jqGrid分页实现代码
Nov 04 Javascript
判断多个input type=file是否有已经选择好文件的代码
May 23 Javascript
js验证电话号码与手机支持+86的正则表达式
Jan 23 Javascript
JavaScript 里的类数组对象
Apr 08 Javascript
JavaScript使用Replace进行字符串替换的方法
Apr 14 Javascript
js实现统计字符串中特定字符出现个数的方法
Aug 02 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
Nov 02 Javascript
jQuery zTree树插件动态加载实例代码
May 11 jQuery
ionic选择多张图片上传的示例代码
Oct 10 Javascript
vue.js或js实现中文A-Z排序的方法
Mar 08 Javascript
使用vscode快速建立vue模板过程详解
Oct 10 Javascript
Vue.extend 登录注册模态框的实现
Dec 29 Vue.js
react中Suspense的使用详解
Sep 01 #Javascript
vue 实现微信浮标效果
Sep 01 #Javascript
微信小程序获取位置展示地图并标注信息的实例代码
Sep 01 #Javascript
JS实现可用滑块滑动的缓动图代码
Sep 01 #Javascript
vue动态子组件的两种实现方式
Sep 01 #Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
Sep 01 #Javascript
简单分析js中的this的原理
Aug 31 #Javascript
You might like
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
动态加载js的几种方法
2006/10/23 Javascript
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
js原型继承的两种方法对比介绍
2014/03/30 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
常用的JQuery函数及功能小结
2016/03/24 Javascript
SWFUpload多文件上传及文件个数限制的方法
2016/05/31 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
js判断空对象的实例(超简单)
2016/07/26 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
使用Python写一个量化股票提醒系统
2018/08/22 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
《夏夜多美》教学反思
2014/02/17 职场文书
品质口号大全
2014/06/17 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
扶贫办主任查摆“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
应用最多的公文《通知》如何写?
2019/04/02 职场文书