二、Vue 模板语法与指令大全:从 v-if 到 v-for(附代码示例)

Vue.js教学第四章:Vue.js 模板语法之指令应用 本文深入探讨了Vue.js模板语法中的核心指令,包括v-on、v-if、v-else-if、v-else以及v-for,旨在帮助开发者全面掌握这些指令的使用技巧,从而更高效地开发出高质量的Vue.js应用程序。文章首先介绍了Vue.js的模板语法及其在前端开发中的重要性,随后详细解析了v-on指令的基本语法、事件修饰符及其应用场景,并介绍了其简写形式。接着,文章剖析了v-if、v-else-if、v-else指令的基本功能与语法,并提供了使用技巧与注意事项。最后,文章深入讲解了v-for指令在遍历数组和对象 阅读详情

1. Vue 模板语法概览

Vue 的模板语法是 HTML 的扩展,通过 插值 和 指令 实现数据绑定与动态渲染。核心特性包括:

  • 插值表达式:{{ }} 实时渲染数据
  • 指令系统:以 v- 开头的特殊属性(如 v-if、v-for)
  • 简写语法::attr 代替 v-bind:attr,@event 代替 v-on:event

2. 基础指令详解

2.1 插值与文本绑定

{{ }} 插值表达式
<template>
  <p>当前时间:{{ currentTime }}</p>
</template>

<script>
export default {
  data() {
    return { currentTime: new Date().toLocaleTimeString() };
  }
};
</script>
v-text 指令
<div v-text="message"></div>
<!-- 等价于 -->
<div>{{ message }}</div>

2.2 条件渲染

指令说明示例代码
v-if条件成立时渲染元素<div v-if="isLogin">欢迎用户</div>
v-elsev-if 的否则分支<div v-if="isLogin">已登录</div><div v-else>请登录</div>
v-else-if多条件分支<div v-if="score>90">A</div><div v-else-if="score>60">B</div>
v-show通过 display 控制显示/隐藏<div v-show="isVisible">内容</div>

注意:v-if 是惰性渲染(条件不成立时不渲染 DOM),而 v-show 始终渲染但控制可见性。

2.3 列表渲染

v-for 基础用法
<template>
  <ul>
    <li v-for="(item, index) in items" :key="index">
      {{ index }}. {{ item.name }} - {{ item.age }}
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Alice', age: 25 },
        { id: 2, name: 'Bob', age: 30 }
      ]
    };
  }
};
</script>
遍历对象
<div v-for="(value, key, index) in userInfo">
  {{ key }}: {{ value }} (索引: {{ index }})
</div>

最佳实践::key 应使用唯一标识(如 id)而非索引,避免列表更新时的性能问题。

3. 高级指令与特性

3.1 属性绑定

v-bind 基础
<img :src="imageUrl" :alt="imageAlt" />
<!-- 动态 class -->
<div :class="['box', {'active': isActive}]"></div>
<!-- 动态 style -->
<div :style="{ color: textColor, fontSize: '16px' }"></div>
缩写语法
:src="imageUrl"       → v-bind:src="imageUrl"  
@click="handleClick"  → v-on:click="handleClick"

3.2 事件处理

事件修饰符
修饰符作用示例代码
.stop阻止事件冒泡<button @click.stop="handle"></button>
.prevent阻止默认行为<a @click.prevent="handle" href="#">链接</a>
.once事件只触发一次<button @click.once="handle">提交</button>
按键修饰符
<input @keyup.enter="submit" />  <!-- 监听回车键 -->
<input @keyup.delete="handle" />  <!-- 监听删除键 -->

3.3 双向绑定

v-model 基础
<template>
  <input v-model="username" placeholder="请输入用户名" />
  <p>输入内容:{{ username }}</p>
</template>

<script>
export default {
  data() { return { username: '' } }
};
</script>
修饰符
修饰符作用示例代码
.trim自动过滤首尾空格<input v-model.trim="username" />
.number转换为数值类型<input v-model.number="age" />
.lazy延迟更新(默认在 input 事件后)<input v-model.lazy="message" />

4. 其他实用指令

4.1 v-once 单次渲染

<div v-once>初始值:{{ count }}</div>
<button @click="count++">+1</button>
<!-- 点击按钮时,v-once 内容不会更新 -->

4.2 v-html 渲染 HTML 内容

<div v-html="htmlContent"></div>
<script>
export default {
  data() {
    return { htmlContent: '<p style="color:red">危险内容</p>' };
  }
};
</script>

注意:此指令存在 XSS 风险,应避免渲染不可信内容。

5. 指令对比与最佳实践

场景推荐指令原因
条件渲染v-if(条件不成立时卸载)适合低频切换场景
频繁显示/隐藏v-show通过 CSS 控制,性能更优
列表渲染v-for + 唯一 :key避免渲染错误,提升更新效率
表单双向绑定v-model简化数据同步逻辑
动态属性/样式v-bind 简写 :语法简洁,支持复杂表达式

6. 总结

Vue 模板语法通过指令系统实现了强大的动态渲染能力,掌握以下核心要点:

  1. 数据绑定:{{ }} 插值与 v-bind 实现数据到 DOM 的映射
  2. 条件与循环:v-if/v-show 和 v-for 控制内容显示逻辑
  3. 交互行为:v-on 处理事件,v-model 实现双向数据绑定
  4. 性能优化:合理使用 v-once 和唯一 :key 提升渲染效率

本文由 [码说数字化] 原创,转载请注明出处。

【Vue】基础系列(二)模板语法 - 插值语法 - 指令语法 - | v-bind | v-model | v-on | v-if | v- show 模板语法-插值语法-指令语法 阅读详情

相关推荐

Vue 3 中 v-if 指令的使用详解

v-if是 Vue 提供的一个条件渲染指令,当绑定到它的表达式返回true或者其他真值时,元素会被插入到 DOM 中;反之,如果表达式返回false或者假值,则该元素不会被渲染,也不会存在于 DOM 树中。这意味着v-if实现了真正的条件性渲染,而不是仅仅隐藏元素。

licy__的博客 3881

#关于用好vue中的v-for循环的方法总结

首先,我们来介绍一下,v-for官方文档上的基本用法 官网上:v-for的基本用法 基于源数据多次渲染元素或模板块。此指令之值,必须使用特定语法 alias in expression,为当前遍历的元素提供别名: <div v-for="item in items"> {{ item.text }} </div> 另外也可以为数组索引指定别名 (或者用于对象的键): <div v-for="(item, index) in items"></div> &

老衲的少女心i~ 4944

Vue 2 中 v-if 指令的使用详解

v-if是 Vue 提供的一个条件渲染指令,当绑定到它的表达式返回true或者其他真值时,元素会被插入到 DOM 中;反之,如果表达式返回false或者假值,则该元素不会被渲染,也不会存在于 DOM 树中。这意味着v-if实现了真正的条件性渲染,而不是仅仅隐藏元素。

licy__的博客 1753

vue 中同时使用v-for和v-if (含template上使用v-for的方法)

同一标签上,不能同时使用v-for和v-if,怎么办? 解决方案 将v-for 写在template上,key和 v-if 写在循环遍历的元素上 (template上不能使用key, 但 v-for 必须要指定key,所以循环遍历的元素上,需要加上key ) <ul> <template v-for="(item,index) in ['国庆节', '春节', '元旦']"> <li v-if="item !== '春节'" :key=..

朝阳39的博客 3286

vue使用模板语法简介及使用模板语法构建的简单计算器示例

Vue的插值表达式使用双花括号{{ }}的形式,其主要作用是将Vue实例中定义的数据渲染到DOM元素中。例如,在Vue实例里有一个message数据属性,在模板中写成,页面渲染时就会将对应的值展示出来。它不仅可以展示简单的变量值,还能用于展示表达式的计算结果,像(前提是num1和num2是已定义的数据属性)等。

alankuo的专栏 1267

重生之我在学Vue--第3天 Vue 3 模板语法与指令

在 Vue 3 中,模板语法是构建用户界面的核心部分,它结合了 HTML 和 Vue 的指令,用于动态绑定数据和处理用户交互。以下是关于模板语法和常用指令的快速入门,详细讲解请参考官方文档。Vue3 官方中文文档传送点:简介 | Vue.jsVue3 的中文官方文档学习笔记很全还有练习场,推荐去官网学习Vue 前端成仙之路_野生的程序媛的博客-优快云博客Go 后端成神之路_野生的程序媛的博客-优快云博客。

Xiao651的博客 1279

vue中v-if和v-for的区别是什么

v-if和v-for的区别:1、作用不同,v-if指令用于条件性地渲染一块内容,这块内容只会在指令的表达式返回 true值的时候被渲染;而v-for指令基于一个数组来渲染一个列表。2、优先级不同,v-for优先级比v-if高,在进行if判断的时候v-for是比v-if先进行判断的。首先在官方文档中明确指出v-for和v-if不建议一起使用。

风清扬的专栏 5139

新手必看:LiteRadio 2c SE遥控器从开箱到飞行的完整指南(附常见问题解答)

本文为新手提供LiteRadio 2c SE遥控器的完整使用指南,涵盖从开箱到首飞的20个关键步骤。详细介绍了遥控器的功能设置、与无人机的对频技巧以及首飞注意事项,帮助用户快速掌握飞行控制,避免常见错误。特别适合无人机初学者阅读。

weixin_29209801的博客 380

js中三种for循环(含案例分析)

vue三种for循环,区别,作用

Cuichenyang158的博客 1万+

VulnHub--mrrobot

Vulnhub靶场--Mr robot 靶机

记录笔记 1097

基于Simulink的魔术公式轮胎动力学仿真

本篇博文主要用来记录汽车系统动力学课程的学习,仅供课程阶段参考,与实际工程应用还有较大距离。基于Simulink的魔术公式轮胎动力学仿真本实例主要有以下任务。1.建立魔术公式轮胎动力学仿真模型。2.绘制不同载荷下的轮胎纵向力—滑动率关系曲线。3.绘制不同载荷下的轮胎侧向力—侧偏角关系曲线。4.绘制不同载荷下的轮胎回正力矩—侧偏角关系曲线。提示:以下是本篇文章正文内容,下面案例可供参考。

shy_201992的博客 6940

编写 Vue v-for 循环更优雅的 7 种方式

编写 Vue v-for 循环更优雅的 7 种方式

JackChan 409

强化学习-动态规划

动态规划(dynamic programming)是程序设计算法中非常重要的内容,能够高效解决一些经典问题,例如背包问题和最短路径规划。动态规划的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到目标问题的解。动态规划会保存已解决的子问题的答案,在求解目标问题的过程中,需要这些子问题答案时就可以直接利用,避免重复计算。本章介绍如何用动态规划的思想来求解在马尔可夫决策过程中的最优策略。

qq_45481856的博客 2113

面试官:为什么Vue中的v-if和v-for不建议一起用?

一、作用v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 true值的时候被渲染v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in...

weixin_44475093的博客 1万+

OSCP-Challenge 2 - Relia

使用andrea:PasswordPassword_6登录远程桌面,在c盘根目录下发现一个计划任务的ps,文件,修改执行的exe位木马,获取到milana用户的反弹shell。,发现开放了一个8000端口,但是我们外部是访问不到的,它对应的页面是/var/www/internal/,这个目录下的文件我们是可以访问的,把这个文件打个包放到本地分析下。其中数据的可以直接连接mssql,但是端口是49965,不过在数据库中没发现什么可用的信息,但是可以修改密码直接进后台,这个可以先放放。

羽的博客 7771

【电源专题】Type-C母座外壳直接接主板GND还是接RC呢?别再纠结了!

Type-C屏蔽壳接地这件事,没有唯一标准答案。符合规范、贴合产品、能过认证,就是最优解。希望这篇文章能帮你理清思路。

一点硬件 601

Vue3 中的模板语法

我们可以把 Vue.js 的模板语法,直接理解为 HTML 语法的一种扩展,它所有的模板节点声明、属性设置和事件注册等都是按照 HTML 的语法来进行扩展设计的。按照官方的说法就是“所有的 Vue 模板都是语法层面合法的 HTML,可以被符合规范的浏览器和 HTML 解析器解析”。 Vue 使用一种基于 HTML 的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上

weixin_62897746的博客 3744

WiFi偏门协议(四):增强的传输机制802.11aa

区分Unicast和Multicast的优先级,以及设定不同的重传次数,以细化EDCA机制。 SCS(StreamClassification Service) 如上图,在VI,VO内各自又增加了一个queue, 对应不同的MAC header。VI和VO内的两个queue可以分别对应UC和MC。这样就提供了同一个AC内的更细粒度的优先级区分。当然还可以使用Drop Eligibility Indication子域来区分不同的重传次数。 改善Multicast数据传...

reekyli的专栏 1790

VUE3.0(一):模板语法及指令介绍

VUE3.0(一):模板语法及指令介绍

chengcheng9876的博客 2106

lammps案例:聚乙烯和石墨烯界面pull out模拟

大家好,我是小马老师。 本文介绍lammps模拟计算界面结合力的一个案例。 本案例参考论文《The interfacial mechanical properties of functionalized graphene- polymer nanocomposites》,对论文作者表示感谢。 模型共分2层,上层为聚乙烯模型,下次为单层石墨烯,模拟过程共分3部分:建模、弛豫、拉伸。 (1)建模 使用MS建立聚乙烯和石墨烯模型,具体方法可参考之前的推文,使用build layer方法建立聚乙烯和石墨烯组合模型,

lammps_jiayou的博客 3495

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Vue的基础语法-常用v-on、v-if、v-bind等指令的细节(最详细)

v-bind指令是帮助我们动态绑定属性的**前面讲的一系列指令,主要是将值插入到模板内容**中。但是,除了内容需要动态来决定外,某些属性我们也希望动态来绑定。比如动态绑定a元素的href属性;比如动态绑定img元素的src属性;绑定属性我们使用v-bind(以下是官方对v-bind的描述,看不懂了解即可,很多东西我们都是用不上缩写预期参数修饰符.camel-将kebab-caseattribute名转换为camelCase。用法。......

m0_71485750的博客 2016

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Vue3基础之v-if条件与 v-for循环

v-else 元素必须跟在一个 v-if 或者 v-else-if 元素后面,v-else-if 的元素必须紧跟在一个 v-if 或一个 v-else-if 元素后面。如果你的元素在应用的生命周期中只会被渲染一次或很少改变,使用 v-if 可能更合适,因为它在条件为 false 时会从 DOM 中移除元素,减少了 DOM 操作的频率。如果你的元素需要频繁地显示和隐藏,条件经常变化,可以考虑使用 v-show,因为它不会在条件为 false 时从 DOM 中移除元素,减少了频繁的 DOM 操作。

study_way的博客 5098

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Vue2(模板语法,指令,修饰符)

对于一些大型项目需要对项目足够的性能优化,这时候你可以选择使用v-once指令对文本进行一次性渲染。

qq_73477845的博客 2263

vue中的模板语法、条件渲染(v-if)、列表渲染(v-for)

因为组件是可复用得实例,如果组件data是一个对象,会暴露在全局,数据全局可见,任意一个组件修改该组件数据,其他使用到该组件得组件数据也会被修改,所以data是一个函数不是一个对象,数据仅组件内可见。

l12345666777的博客 2318

为什么Vue中的v-if和v-for不建议一起用?

一、作用 v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 true 值的时候被渲染 v-for 指令基于一个数组来渲染一个列表。 v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组或者对象,而 item 则是被迭代的数组元素的别名 在 v-for 的时候,建议设置 key 值,并且保证每个 key 值是独一无二的,这便与 diff 算法进行优化 两者在用法上 <Modal v-if="isShow" /> <li.

webblock的博客 5356

Vue3 模板语法及指令

跳过这个元素和它的所有子元素的编译过程,用于显示原始 Mustache 标签,防止 Vue 编译,该指令可用于优化大量静态内容的渲染性能。修饰符 (modifier) 是以半角句号.指明的特殊后缀,用于指出一个指令应该以特殊方式绑定,用于修改指令的默认行为。“Mustache”语法仅支持单一的表达式,必须是能够计算出结果的JavaScript 代码,而不是任意的JavaScript 代码。Vue 指令是以 v- 为前缀的特殊属性,Vue 提供了许多内置指令,下面列举一些比较常用的指令。

qq_39194983的博客 1495
上一篇: 一、Vue 生命周期钩子详解:从创建到销毁的全流程
下一篇: 三、Vue 计算属性 vs 侦听器:响应式数据处理的两种方案
码说数字化
博客等级 码龄6年 353粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值