什么是Vue.js的指令?如何使用v-if指令?

Vue.js 的指令(Directives)是带有 v- 前缀的特殊特性。指令可以赋予 DOM 元素不同的行为。

Vue.js 内置了许多常用的指令,例如:

  • v-if:条件渲染指令,根据值的真假来决定是否渲染元素
  • v-else:v-if 的else 块
  • v-show:根据表达式之真假值,切换元素的 display CSS 属性
  • v-for:循环渲染指令
  • v-on:监听 DOM 事件指令
  • v-bind:动态绑定属性
  • v-model:双向数据绑定

其中 v-if 是最常用的条件渲染指令。它根据表达式的真假来条件渲染元素。

使用方式:

<h1 v-if="seen">Hello</h1>
new Vue({
  el: '#app',
  data: {
    seen: true
  }  
})

这里 seen 的值如果为 true,则渲染;如果为 false,则什么也不渲染。
v-if 也可以搭配 v-else 使用:

<div v-if="seen"> Seen </div>
<div v-else> Not seen </div>

以及 v-else-if:

<div v-if="seen === 'male'"> Male </div>
<div v-else-if="seen === 'female'"> Female </div>
<div v-else> Not specified </div> 

另外,v-show 与 v-if 的区别是:
v-if 是真实的条件渲染,它会确保条件块内的事件监听器和子组件适当地被销毁和重建。
v-show 只是简单地切换元素的 CSS display 属性,条件块内的事件监听器和子组件不会被销毁。
所以,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。
总之,用 v-if 当元素可能永远也不会被渲染,用 v-show 当元素只会被隐藏的情况下。