背景:
前端面试中,vue技术栈的问题是非常常见的。而v-if和v-show因为作为vue常用的指令,在使用上有相似之处,又有不同之处,常常被用来作为面试的考题。接下来,让我分析一下面试中遇到该问题该如何解答。
回答思路
1.总分 2.结合实际运用
答案
总:v-if与v-show都是动态显示元素或隐藏的。不同点1.原理不同 2.使用场景不同3.用法不同
分:
1.原理不同:v-if是直接在DOM上创建或删除该元素,而v-show是利用CSS特性中的display:block和display:none进行元素的显示与隐藏。
2.使用场景不同: 如果元素的显示隐藏只操作一次,可以使用v-if。频繁操作建议用v-show。
3.用法不同:v-show一般是作为v-show:变量来使用,而v-if可以配合v-else来使用
实际运用:
v-if在性能优化上不太友好,当 v-if="false" 时,内部组件是不会渲染的,所以在特定条 件才渲染部分组件(或内容)时,可以先将条件设置为 false,需要时(或异步,⽐如 $nextTick)再设置为 true,这样可以优先渲染重要的其它内容,合理利⽤,可以进⾏性能优化。