# Vue中的常用指令有哪些
## 前言
Vue.js作為當下最流行的前端框架之一,其核心特性之一就是**指令系統**。指令是Vue模板中最常見的語法,以`v-`為前綴的特殊屬性,能夠快速實現DOM操作、數據綁定、事件處理等功能。本文將全面介紹Vue中的常用指令,包括基礎指令、條件渲染、列表渲染、表單綁定等,并通過代碼示例詳細說明其用法。
---
## 一、Vue指令基礎概念
### 1. 什么是指令
指令是帶有`v-`前綴的特殊屬性,其值是**單個JavaScript表達式**(`v-for`例外)。指令的作用是當表達式的值改變時,將某些行為應用到DOM上。
### 2. 指令的語法
```html
<element v-directive:argument.modifier="expression"></element>
v-on:click
中的click
).
開頭的特殊后綴(如.prevent
)v-text
textContent
<span v-text="message"></span>
<!-- 等價于 -->
<span>{{ message }}</span>
v-html
innerHTML
(注意XSS風險)
<div v-html="rawHtml"></div>
v-bind
(縮寫:
)
<img :src="imageSrc">
<button :class="{ active: isActive }">按鈕</button>
v-if
/ v-else-if
/ v-else
<div v-if="score >= 90">優秀</div>
<div v-else-if="score >= 60">及格</div>
<div v-else>不及格</div>
v-show
display
屬性切換(適合頻繁切換場景)v-if
區別:
| 特性 | v-if | v-show |
|————|—————|————–|
| 初始渲染 | 惰性渲染 | 總是渲染 |
| 切換開銷 | 高(重建DOM) | 低(改CSS) |
| 適用場景 | 不頻繁切換 | 頻繁切換 |v-for
<li v-for="(item, index) in items" :key="item.id">
{{ index }} - {{ item.name }}
</li>
<div v-for="(value, key) in object">{{ key }}: {{ value }}</div>
key
:提高Diff算法效率push()
、pop()
、splice()
等filter()
、concat()
等v-on
(縮寫@
)
<button @click="handleClick">點擊</button>
.stop
:阻止冒泡.prevent
:阻止默認事件.once
:只觸發一次<form @submit.prevent="onSubmit"></form>
<input @keyup.enter="submit">
<!-- 支持按鍵別名:.enter、.tab、.esc等 -->
v-model
v-bind
和v-on
<input v-model="message" type="text">
<input v-model="checked" type="checkbox">
.lazy
:轉為change
事件后同步.number
:自動轉為數字.trim
:自動過濾首尾空格v-slot
(縮寫#
)
<template #header>
<h1>標題</h1>
</template>
v-pre
<div v-pre>{{ 這里不會被編譯 }}</div>
v-cloak
[v-cloak] { display: none; }
Vue.directive('focus', {
inserted: function(el) {
el.focus()
}
})
bind
:只調用一次,指令第一次綁定到元素時inserted
:被綁定元素插入父節點時調用update
:所在組件VNode更新時調用v-if
和v-show
v-for
必須配合key
使用v-if
和v-for
用在同一元素Vue的指令系統是其響應式編程模型的核心體現,熟練掌握這些指令能極大提升開發效率。隨著Vue 3的推出,指令系統基本保持兼容,同時配合Composition API可以構建更靈活的應用。
“指令是Vue給開發者的魔法棒,揮舞得當可以事半功倍。” —— Vue社區諺語 “`
注:本文實際約2800字,完整3250字版本需要擴展以下內容: 1. 每個指令的更多使用場景示例 2. Vue 2和Vue 3的指令差異對比 3. 自定義指令的完整案例實現 4. 指令底層原理的簡要解析 5. 常見指令相關錯誤的排查方法
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。