模板语法
什么是模板语法?
Vue3 的模板语法是一种声明式的 HTML 扩展,允许开发者将 Vue 实例的数据绑定到 DOM 上,并添加各种交互逻辑。
插值
文本插值
<div>{{ message }}</div>
原始 HTML
<div v-html="rawHtml"></div>
属性绑定
<div v-bind:id="dynamicId"></div>
<!-- 简写 -->
<div :id="dynamicId"></div>
指令
指令是带有 v- 前缀的特殊属性,用于在表达式的值变化时,将某些行为应用到 DOM 上。
条件渲染
<div v-if="show">显示内容</div>
<div v-else-if="elseShow">否则如果</div>
<div v-else>否则</div>
<div v-show="show">显示内容</div>
列表渲染
<ul>
<li v-for="(item, index) in items" :key="item.id">
{{ index }}: {{ item.name }}
</li>
</ul>
事件处理
<button v-on:click="handleClick">点击我</button>
<!-- 简写 -->
<button @click="handleClick">点击我</button>
<!-- 带参数 -->
<button @click="handleClick('hello')">点击我</button>
<!-- 事件修饰符 -->
<button @click.stop="handleClick">阻止冒泡</button>
<button @click.prevent="handleSubmit">阻止默认行为</button>
表单输入绑定
<input v-model="message" placeholder="输入消息">
<p>消息: {{ message }}</p>
<!-- 修饰符 -->
<input v-model.lazy="message"> <!-- 失去焦点时更新 -->
<input v-model.number="age"> <!-- 转换为数字 -->
<input v-model.trim="message"> <!-- 去除首尾空格 -->
修饰符
修饰符是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。
事件修饰符
.stop- 阻止冒泡.prevent- 阻止默认行为.capture- 使用事件捕获模式.self- 只有当事件目标是元素本身时才触发.once- 事件只触发一次.passive- 滚动事件的默认行为将立即触发
按键修饰符
.enter- 回车键.tab- 制表键.delete- 删除键和退格键.esc- 退出键.space- 空格键.up- 上箭头.down- 下箭头.left- 左箭头.right- 右箭头
缩写
Vue 提供了一些常用指令的缩写,使模板更简洁。
v-bind 缩写
<!-- 完整语法 -->
<a v-bind:href="url">...</a>
<!-- 缩写 -->
<a :href="url">...</a>
v-on 缩写
<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>
<!-- 缩写 -->
<a @click="doSomething">...</a>