三、Vue 模板语法

devtools/2025/1/1 14:22:54/

文章目录

  • 一、核心概念
  • 二、插值操作
  • 三、属性绑定
  • 四、表达式支持
  • 五、指令系统
  • 六、用户输入与双向数据绑定
  • 七、过滤器
  • 八、缩写语法


在这里插入图片描述

一、核心概念

  Vue.js 的精髓在于其简洁而高效的模板系统。通过这个系统,开发者能够以声明式的方式,轻松地将 DOM 元素与 Vue 实例中的数据建立紧密的绑定关系。这意味着,当数据发生变化时,DOM 会自动更新,反之亦然,极大地提升了开发效率和用户体验。
  并且,Vue.js 与响应系统紧密结合。当应用的状态出现改变时,Vue 凭借其智能的计算能力,能够精准地确定重新渲染组件所需的最小代价,并高效地将其应用到实际的 DOM 操作中,避免了不必要的资源浪费和性能开销。

二、插值操作

  文本插值:在 Vue.js 中,最常见且基础的数据绑定形式便是使用双大括号 {{…}} 进行文本插值。例如:

<div id="app"><p>{{ message }}</p>
</div>
javascript
new Vue({el: '#app',data: {message: 'Hello Vue!'}
})

  在上述代码中,{{ message }} 会被替换为 Vue 实例中 data 里的 message 属性值,从而实现数据到文本的动态绑定。
  HTML 插值(v-html 指令):当我们需要在 DOM 中输出 HTML 代码时,就会用到 v-html 指令。比如:

<div id="app"><div v-html="message"></div>
</div>
new Vue({el: '#app',data: {message: '<h1>欢迎来到 Vue 世界</h1>'}
})

  这里,v-html 指令会将 message 的值解析为 HTML 并渲染到页面上,但需要注意的是,使用该指令时要确保数据来源的安全性,防止 XSS 攻击。

三、属性绑定

  在 HTML 属性的设置中,Vue.js 提供了 v-bind 指令来实现响应式的属性绑定。例如,我们可以根据一个布尔值来动态切换一个 CSS 类:

<div id="app"><label for="r1">切换样式</label><input type="checkbox" v-model="use" id="r1"><br><br><div v-bind:class="{'class1': use}">v-bind:class 指令示例</div>
</div>
new Vue({el: '#app',data:{use: false}
});

  在这个例子中,当 use 的值为 true 时,div 元素会添加 class1 类,否则不添加,从而实现了属性的动态绑定和样式的切换。

四、表达式支持

  Vue.js 为开发者提供了全面的 JavaScript 表达式支持,这使得我们在模板中可以进行各种灵活的运算和逻辑判断。例如:

<div id="app">{{5+5}}<br>{{ ok? '是' : '否' }}<br>{{ message.split('').reverse().join('') }}<div v-bind:id="'list-' + id">学习 Vue</div>
</div>
new Vue({el: '#app',data: {ok: true,message: 'Vue 教程',id : 1}
})

  在上述代码中,我们可以看到在双大括号内可以进行加法运算、三元表达式运算以及字符串的反转操作等,并且在 v-bind 指令中也可以使用表达式来动态生成属性值。

五、指令系统

  • 指令基础: 指令是 Vue.js 模板语法中的重要组成部分,它们带有 v- 前缀,是一种特殊的属性。指令的主要作用是在表达式的值发生改变时,将特定的行为应用到 DOM 元素上。例如,v-if 指令:
<div id="app"><p v-if="seen">你能看到我啦</p>
</div>
new Vue({el: '#app',data: {seen: true}
})

  这里,v-if 指令会根据 seen 的值(true 或 false)来决定是否将 p 元素插入到 DOM 中,实现了条件渲染的功能。

  • 指令参数: 指令后面可以跟一个冒号来指明参数,不同的指令对参数有不同的作用。以 v-bind 指令为例:
<div id="app"><pre><a v-bind:href="url">访问网站</a></pre>
</div>
new Vue({el: '#app',data: {url: 'https://vuejs.org'}
})

  在这个例子中,href 就是 v-bind 指令的参数,它告知指令将 a 元素的 href 属性与 Vue 实例中的 url 值进行绑定,实现了响应式的链接地址设置。
同样,v-on 指令用于监听 DOM 事件,例如:

<a v-on:click="doSomething">点击我</a>

  这里的 click 就是 v-on 指令的参数,表示监听的是 click 事件,当事件触发时,会执行 doSomething 方法。

  • 指令修饰符: 修饰符是以半角句号 . 指明的特殊后缀,用于对指令进行特殊的行为绑定。例如,.prevent 修饰符与 v-on 指令结合使用时:
<form v-on:submit.prevent="onSubmit"></form>

  在这个例子中,.prevent 修饰符告诉 v-on 指令,当表单提交事件触发时,调用 event.preventDefault() 方法,阻止表单的默认提交行为,从而可以在 JavaScript 中进行自定义的提交逻辑处理。

六、用户输入与双向数据绑定

  • 双向数据绑定(v-model 指令): 在处理用户输入时,Vue.js 提供了 v-model 指令来实现双向数据绑定,这在表单元素中非常实用。例如:
<div id="app"><p>{{ message }}</p><input v-model="message">
</div>
new Vue({el: '#app',data: {message: '初始文本'}
})

  在上述代码中,当用户在输入框中输入内容时,message 的值会自动更新,同时,页面上显示的文本也会实时更新为输入框中的内容,实现了数据的双向流动,方便快捷地处理用户输入数据并实时反馈到界面上。
  按钮事件与用户输入响应:除了表单输入框,我们还可以使用 v-on 指令来监听按钮的点击事件,并对用户的输入进行相应的处理。例如,实现一个字符串反转的功能:

<div id="app"><p>{{ message }}</p><button v-on:click="reverseMessage">反转字符串</button>
</div>
new Vue({el: '#app',data: {message: '待反转字符串'},methods: {reverseMessage: function () {this.message = this.message.split('').reverse().join('')}}
})

  当用户点击按钮时,reverseMessage 方法会被调用,将 message 的值进行反转,并更新到页面上显示出来,实现了对用户操作的响应和数据的动态更新。

七、过滤器

  Vue.js 允许开发者自定义过滤器,用于常见的文本格式化操作,过滤器通过 “管道符” | 来指示。例如,我们可以定义一个将字符串首字母大写的过滤器:

<div id="app">{{ message | capitalize }}
</div>
new Vue({el: '#app',data: {message: 'hello vue'},filters: {capitalize: function (value) {if (!value) return ''value = value.toString()return value.charAt(0).toUpperCase() + value.slice(1)}}
})

  在上述代码中,{{ message | capitalize }} 会将 message 的值通过 capitalize 过滤器进行处理,将首字母转为大写后显示在页面上。
  过滤器还可以串联使用,例如:{{ message | filterA | filterB }},这样会依次将 message 的值通过 filterA 和 filterB 两个过滤器进行处理。
  同时,过滤器也可以接受参数,例如:{{ message | filterA(‘arg1’, arg2) }},其中 message 是第一个参数,‘arg1’ 是传给过滤器的第二个参数,arg2 表达式的值会被求值后作为第三个参数传给过滤器,从而实现更加灵活和强大的文本处理功能。

八、缩写语法

  为了提高开发效率和代码的简洁性,Vue.js 为两个常用的指令提供了缩写形式。

  • v-bind 缩写:
<!-- 完整语法 -->
<a v-bind:href="url"></a>
<!-- 缩写 -->
<a :href="url"></a>

  使用 : 来代替 v-bind:,实现了更简洁的属性绑定语法,让代码更加清晰易读。

  • v-on 缩写:
<!-- 完整语法 -->
<a v-on:click="doSomething"></a>
<!-- 缩写 -->
<a @click="doSomething"></a>

  通过 @ 来代替 v-on:,简化了事件监听的语法,方便开发者在模板中快速绑定事件处理函数。
在这里插入图片描述


http://www.ppmy.cn/devtools/146574.html

相关文章

JVM - JVM基础

JVM - JVM基础 文章目录 JVM - JVM基础一&#xff1a;类字节码详解1&#xff1a;Java为何能够跨平台2&#xff1a;Java字节码文件2.1&#xff1a;Class文件的结构属性2.2&#xff1a;从一个例子开始2.3&#xff1a;反编译字节码文件补充说明&#xff1a;类的访问标志补充说明&a…

5.npm包

文章目录 [TOC](文章目录) 3.npm与包3.1.包3.2.npm体验在项目中安装包的命令包管理配置文件一次性安装开发项目时安装的包如何从项目中卸载包devDependencies节点的作用解决下载包速度比较慢的问题nrm工具&#xff0c;利用其提供的终端命令&#xff0c;可以快速查看和切换下包的…

区块链开发入门合集(1)共25节

在开始本教程之前&#xff0c;我们先来了解一些相关的概念&#xff0c;相信这些概念认识完&#xff0c;你会对区块链有一个整体而清晰的认识&#x1f604;。到后面我们也会基于Node&#xff0c;Solidity搭建一套自己的私有链&#xff0c;这样你就可以更加切身体会web3的乐趣和魅…

小程序学习05——uniapp路由和菜单配置

目录 一、路由 二、如何管理页面及路由&#xff1f; 三、pages.json 页面路由 四、 tabBar 一、路由 路由&#xff1a;在前端&#xff0c;往往指代用不同地址请求不同页面&#xff0c;决定了用户如何在应用的不同页面之间导航。 菜单&#xff1a;对于每个路径&#xff08;…

算法常用库函数——C++篇

前言 本文主要记录、整理、回顾在算法考试中常用的一些库函数&#xff0c;技巧等&#xff0c;不断更新中~ list 常用方法 在一般c编程中&#xff0c;对于数组这样的数据结构&#xff0c;一般都使用vector居多&#xff0c;貌似list用的很少。但实际list也十分强大&#xff0c…

【项目日记(5)】第二层:中心缓存的具体实现(上)

目录 前言1. span结构的具体实现2. 中心缓存类的定义3. 中心缓存如何分配小块儿内存?4. 中心缓存无内存时应该如何做?5. 总结 前言 中心缓存起到一个承上启下的作用&#xff0c;它负责给线程缓存分配小块儿的内存&#xff0c;并且负责从页缓存申请大块儿内存。 本章重点: 本…

android sqlite 数据库简单封装示例(java)

sqlite 数据库简单封装示例&#xff0c;使用记事本数据库表进行示例。 首先继承SQLiteOpenHelper 使用sql语句进行创建一张表。 public class noteDBHelper extends SQLiteOpenHelper {public noteDBHelper(Context context, String name, SQLiteDatabase.CursorFactory fact…

PDF书籍《手写调用链监控APM系统-Java版》第8章 插件与链路的结合:Gson插件实现

本人阅读了 Skywalking 的大部分核心代码&#xff0c;也了解了相关的文献&#xff0c;对此深有感悟&#xff0c;特此借助巨人的思想自己手动用JAVA语言实现了一个 “调用链监控APM” 系统。本书采用边讲解实现原理边编写代码的方式&#xff0c;看本书时一定要跟着敲代码。 作者…