两者相同点:
- 都是动态的控制DOM元素。
两者不同点:
- 对控制组件而言,v-if的优先级是要大于v-show的优先级,所以在整个组件的渲染的时候需要使用v-if来动态的控制DOM元素的添加和删除,v-show只是同来css的display来控制元素的显示和隐藏
- v-if是有惰性的,只有当第一次的条件为真的时候才会开始编译
- 对于显示隐藏切换比较频繁可以使用v-show,这样可以降低消耗
- v-if和v-for尽量不要同时使用,因为v-for的优先级大于v-if,会先执行v-for后执行v-if,可以增加一个标签进行判断。
- 使用异步获取数据传递给子组件的时候,需要对属性进行一个判断,当存在数据的时候,刷新子组件,否则子组件不能及时响应数据。
- 在vue组件内如果需要操作DOM的时候,可以优先使用vue组件推荐的ref去绑定一个值,或者在mounted里面去获取对应的dom节点(因为dom节点在beforeMount已经渲染完成,所以在这个地方是可以获取到节点的)。