• 实现的区别
    v-if: 动态的向dom树内添加或删除dom元素
    v-show: 控制CSS的display:none

  • 编译的区别
    v-if: 切换时有一个局部编译/卸载的过程,切换过程中会销毁和重建事件监听和子组件
    v-show: 就是在控制CSS

  • 编译的条件
    v-if: 初始值为false时,不编译
    v-show: 不论初始值是什么,都会编译

  • 性能
    v-if: 不停地销毁和创建
    v-show: 只编译一次

  • 初次渲染
    v-if:
    初始值false => 不会渲染,生命周期钩子函数不会执行,v-if是惰性的
    初始值true => 会渲染,执行beforeCreate,created,beforeMount,mounted钩子函数
    v-show:
    始终会渲染,执行beforeCreate,created,beforeMount,mounted钩子函数,非惰性

  • 切换
    v-if:
    false => true 执行beforeCreate,created,beforeMount,mounted
    true => false 执行beforeDestroy,destroyed
    v-show:
    始终保持在mounted中