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 相关文章推荐
Javascript中定义方法的另类写法(批量定义js对象的方法)
Feb 25 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
Apr 29 Javascript
JavaScript实现彩虹文字效果的方法
Apr 16 Javascript
Bootstrap学习笔记之css样式设计(2)
Jun 07 Javascript
canvas实现爱心和彩虹雨效果
Mar 09 Javascript
react实现pure render时bind(this)隐患需注意!
Mar 09 Javascript
layui 弹出层回调获取弹出层数据的例子
Sep 02 Javascript
微信小程序canvas分享海报功能
Oct 31 Javascript
js实现简单的贪吃蛇游戏
Apr 23 Javascript
angula中使用iframe点击后不执行变更检测的问题
May 10 Javascript
node.js如何根据URL返回指定的图片详解
Oct 21 Javascript
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 jQuery
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
PHP-MySQL教程归纳总结
2008/06/07 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
PHP中计算字符串相似度的函数代码
2012/12/29 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
js tab 选项卡
2009/04/26 Javascript
js操作二级联动实现代码
2010/07/27 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
实例讲解JS中setTimeout()的用法
2016/01/28 Javascript
Angularjs过滤器使用详解
2016/05/25 Javascript
浅析JS获取url中的参数实例代码
2016/06/14 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
详解webpack编译多页面vue项目的配置问题
2017/12/11 Javascript
Angular 项目实现国际化的方法
2018/01/08 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
基于node+vue实现简单的WebSocket聊天功能
2020/02/01 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
Python去除、替换字符串空格的处理方法
2018/04/01 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
Blue Nile中国官网:全球知名的钻石和珠宝网络零售商
2020/03/22 全球购物
建筑工程造价专业自荐信
2014/07/08 职场文书
工作失误检讨书
2015/01/26 职场文书
2015年教研组工作总结
2015/05/04 职场文书
幼儿园中班班级总结
2015/08/10 职场文书