Vue入门指南——分支结构

╰+攻爆jí腚メ 2023-07-01 14:54 45阅读 0赞

目录:

  • 一、v-if
  • 二、v-else-if & v-else
  • 三、v-show
  • 四、v-show 和 v-if的区别
  • 五、总结

一、v-if

v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 true 值的时候被渲染。

  1. <div id="app">
  2. <!-- 判断是否加载,如果为真,就加载,否则不加载-->
  3. <span v-if="flag">
  4. 如果flag为true则显示,false不显示!
  5. </span>
  6. </div>
  7. <script>
  8. var vm = new Vue({
  9. el:"#app",
  10. data:{
  11. flag:true
  12. }
  13. })
  14. </script>

v-if的使用场景

  • 1.多个元素 通过条件判断展示或者隐藏某个元素。或者多个元素
  • 2.进行两个视图之间的切换

二、v-else-if & v-else

  1. <div v-if="type === 'A'">
  2. A
  3. </div>
  4. <!-- v-else-if紧跟在v-if或v-else-if之后 表示v-if条件不成立时执行-->
  5. <div v-else-if="type === 'B'">
  6. B
  7. </div>
  8. <div v-else-if="type === 'C'">
  9. C
  10. </div>
  11. <!-- v-else紧跟在v-if或v-else-if之后-->
  12. <div v-else>
  13. Not A/B/C
  14. </div>
  15. <script>
  16. new Vue({
  17. el: '#app',
  18. data: {
  19. type: 'C'
  20. }
  21. })
  22. </script>

三、v-show

另一个用于根据条件展示元素的选项是 v-show 指令。用法大致与v-if一样。

  1. <div v-show='flag'>测试v-show</div>

不同的是带有 v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS 属性 display。

注意:v-show 不支持 <template> 元素,也不支持 v-else。

四、v-show 和 v-if的区别

  • v-show本质就是标签display设置为none,控制隐藏

    • v-show只编译一次,后面其实就是控制css,而v-if不停的销毁和创建,故v-show性能更好一点。
  • v-if是动态的向DOM树内添加或者删除DOM元素

    • v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件

五、总结

  • v-if 的特点:每次都会重新删除或创建元素
  • v-show 的特点: 每次不会重新进行DOM的删除和创建操作,只是切换了元素的 display:none 样式

  • v-if 有较高的切换性能消耗
  • v-show 有较高的初始渲染消耗

  • 如果元素涉及到频繁的切换,最好不要使用 v-if, 而是推荐使用 v-show
  • 如果元素可能永远也不会被显示出来被用户看到,则推荐使用 v-if

参考链接:https://cn.vuejs.org/v2/guide/conditional.html#v-if-vs-v-show

如果您也正在学习前端的路上,记得关注该博主,学习更多关于前端的知识~

博主主页 Poetic Code

发表评论

表情:
评论列表 (有 0 条评论,45人围观)

还没有评论,来说两句吧...

相关阅读

    相关 分支结构

    Javascript 表达式与运算符 > 表达式是对一个或多个变量或值(操作数)进行运算,并返回一个新值 > 运算符可以分为以下类别: > > 1. 赋

    相关 Vue 风格指南快速入门

    Vue 官方在最近发布了代码风格指南的BETA版本,旨在引导开发者以正确的方式来书写代码,避免因为不规范而导致的问题。这对于新手开发者来说,只要遵循风格指南的内容,就可以避免很

    相关 vue.js新手入门指南

    最近项目需要用到前端的vue框架,而我之前完全没有接触过前端的东西,刚开始搜索vue的相关介绍,被vue一些全家桶给整蒙了,对于vue,vue-router,vuex,axio