Vue3 模板语法(建议收藏)

Vue3 模板语法:从入门到实战的完整指南

在前端开发的世界里,Vue 3 的出现像是一场及时雨,它不仅带来了性能的飞跃,更让开发者体验到了“声明式编程”的优雅。而这一切的核心,正是 Vue3 模板语法。它不像原生 HTML 那样死板,也不像 JavaScript 那样繁琐,而是用一种“像写 HTML 一样写逻辑”的方式,让视图和数据之间建立起无缝的连接。

如果你正在学习 Vue 3,那么掌握模板语法,就是你通往高效开发的第一步。它不是简单的语法糖,而是一种思维方式的转变——从“我怎么写代码来改变页面”变成“我怎么定义数据,让页面自动更新”。


数据绑定:让页面“活”起来

Vue3 模板语法最核心的能力,就是实现数据与视图的双向绑定。你可以把模板理解为一个“智能画布”,它会根据你提供的数据,自动绘制出对应的页面内容。

插值表达式:最基础的数据展示

最简单的数据绑定方式是使用双大括号 {{ }},也叫插值表达式。它允许你在模板中直接插入变量或表达式。

<div>
  <p>{{ message }}</p>
  <p>{{ user.name + ',年龄:' + user.age }}</p>
</div>

注释:

  • message 是一个定义在 Vue 实例中的响应式数据,模板会自动更新其值;
  • user.name + ',年龄:' + user.age 是一个简单的字符串拼接,Vue 会计算表达式结果并插入到页面中;
  • 这种方式适合展示静态文本或简单计算结果。

v-text 指令:替代插值的另一种写法

v-text 指令可以用来更新元素的文本内容,它和插值表达式功能一致,但更强调“指令”语义。

<div>
  <p v-text="greeting"></p>
  <!-- 等价于:<p>{{ greeting }}</p> -->
</div>

注释:

  • 使用 v-text 时,元素内部的原始文本会被完全替换;
  • 如果你不希望内容被解析为 HTML,v-text 是更安全的选择;
  • 相比插值,v-text 在复杂模板中可读性更好,尤其当需要绑定大量文本时。

指令系统:Vue3 模板语法的“魔法引擎”

Vue 3 的模板语法之所以强大,离不开指令系统。指令是带有 v- 前缀的特殊属性,它们告诉 Vue 在特定条件下执行某些操作。

v-if 和 v-show:控制元素是否显示

这两个指令都用于条件渲染,但行为不同。

<div>
  <p v-if="isVisible">这段文字只有在 isVisible 为 true 时才显示</p>
  <p v-show="isVisible">这段文字始终存在于 DOM 中,只是隐藏或显示</p>
</div>

注释:

  • v-if 是“真值判断”:当条件为 false 时,元素完全从 DOM 中移除;
  • v-show 是“CSS 控制”:通过 display: none 隐藏元素,但 DOM 依然存在;
  • 适合频繁切换的场景用 v-show,适合很少切换的场景用 v-if,避免 DOM 操作开销。

v-for:循环渲染列表

当你要展示一组数据时,v-for 就是你的得力助手。它类似于 JavaScript 的 for 循环,但更简洁。

<ul>
  <li v-for="(item, index) in items" :key="index">
    {{ index + 1 }}. {{ item.name }} - {{ item.price }} 元
  </li>
</ul>

注释:

  • (item, index) 表示当前项和索引,类似于 forEach 的回调参数;
  • :key="index" 是必须的,Vue 用 key 来追踪每个节点的身份,提升渲染效率;
  • 推荐使用唯一标识符(如 id)作为 key,而不是 index,避免列表更新时出错。

事件绑定:让页面“会说话”

用户交互是现代网页的核心。Vue 3 模板语法通过 v-on 指令(简写为 @)来绑定事件。

<button @click="handleClick">点击我</button>
<button @click="handleClick(123)">带参数点击</button>

注释:

  • @clickv-on:click 的简写,监听点击事件;
  • handleClick 是定义在 methods 中的方法,Vue 会自动绑定上下文;
  • 传递参数时,可以直接在事件中写 handleClick(123),Vue 会将事件对象作为最后一个参数传递。

修饰符:事件处理的“快捷键”

Vue 提供了多种事件修饰符,让你无需编写额外代码就能实现常见需求。

<!-- 阻止默认行为 -->
<a @click.prevent="submit">提交</a>

<!-- 阻止事件冒泡 -->
<div @click.stop="parentClick">
  <button @click="childClick">点击子元素</button>
</div>

<!-- 只在按键为 Enter 时触发 -->
<input @keyup.enter="onEnter" placeholder="按回车提交">

<!-- 事件只触发一次 -->
<button @click.once="onceClick">只触发一次</button>

注释:

  • prevent 阻止浏览器默认行为(如表单提交);
  • stop 阻止事件向上冒泡;
  • enter 仅在按回车键时触发;
  • once 事件只执行一次,适合“加载完成”类操作。

表单绑定:与用户输入“对话”

表单是用户与应用交互的主要入口。Vue 3 提供了 v-model 指令,让表单元素与数据双向同步。

<input v-model="username" placeholder="请输入用户名" />
<select v-model="selectedCity">
  <option value="">请选择城市</option>
  <option value="beijing">北京</option>
  <option value="shanghai">上海</option>
</select>

<!-- 多选框 -->
<div>
  <label>
    <input type="checkbox" v-model="hobbies" value="reading" />
    阅读
  </label>
  <label>
    <input type="checkbox" v-model="hobbies" value="coding" />
    编程
  </label>
</div>

注释:

  • v-modelv-bind:valuev-on:input 的语法糖;
  • 对于输入框,它自动监听 input 事件并更新数据;
  • 对于多选框,v-model 会将选中的值存入数组;
  • 使用 v-model 后,你不再需要手动写 @input:value,代码更简洁。

计算属性与侦听器:数据的“智能处理”

当数据之间存在复杂依赖时,直接在模板中写表达式会变得难以维护。这时,计算属性(computed)和侦听器(watch)就派上用场了。

计算属性:自动更新的“衍生数据”

export default {
  data() {
    return {
      firstName: '张',
      lastName: '三'
    }
  },
  computed: {
    fullName() {
      // 计算属性会缓存结果,只有依赖变化时才重新计算
      return this.firstName + this.lastName
    }
  }
}
<p>{{ fullName }}</p>

注释:

  • computed 中定义的方法,会作为响应式数据使用;
  • 只要 firstNamelastName 改变,fullName 会自动更新;
  • Vue 会缓存计算结果,避免重复计算,性能更优。

侦听器:响应数据变化的“守夜人”

当需要执行异步操作或复杂逻辑时,watch 更合适。

export default {
  data() {
    return {
      searchQuery: ''
    }
  },
  watch: {
    searchQuery(newVal, oldVal) {
      // 每当 searchQuery 变化时触发
      console.log('旧值:', oldVal, '新值:', newVal)
      // 可以发起 API 请求、延迟处理等
      this.debouncedSearch(newVal)
    }
  },
  methods: {
    debouncedSearch(query) {
      // 使用防抖处理搜索请求
      clearTimeout(this.timer)
      this.timer = setTimeout(() => {
        console.log('搜索:', query)
      }, 300)
    }
  }
}

注释:

  • watch 用于监听特定数据的变化;
  • 支持深度监听对象和数组;
  • 常用于搜索、表单验证、状态同步等场景。

总结:Vue3 模板语法的“灵魂”

Vue3 模板语法之所以强大,是因为它把“数据”和“视图”真正地解耦了。你不再需要手动操作 DOM,而是通过声明数据的变化,让 Vue 自动更新页面。

从插值表达式到指令系统,从事件绑定到表单处理,再到计算属性与侦听器,每一步都体现了“以数据为中心”的设计哲学。

掌握 Vue3 模板语法,不仅是学习一个技术,更是掌握一种更高效、更优雅的开发思维。当你能用几行代码就实现复杂交互时,你会真正体会到“写代码像写自然语言”那种畅快感。

如果你还在为页面更新而烦恼,不妨试试用 Vue3 模板语法重新组织你的思路——你会发现,前端开发,也可以如此简单而美妙。