# Vue 入门级教程三

在前两篇 Vue 入门教程中,我们已经熟悉了 Vue 的基础语法、数据绑定、指令以及组件化开发等核心概念。在本教程中,我们将进一步探索 Vue 的高级特性,包括过滤器、自定义指令、过渡效果以及 Vue 与后端数据交互等内容,让你能够构建出更加丰富和动态的前端应用。

一、过滤器(Filters)

过滤器是 Vue.js 中用于对数据进行格式化或转换的功能。它们可以在模板插值表达式中使用,也可以在 v-bind 指令中使用,以方便地处理数据显示的格式。

1. 全局过滤器

我们可以通过 Vue.filter 方法来定义全局过滤器。例如,创建一个将文本转换为大写的过滤器:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Vue Filters Example</title><script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head><body><div id="app"><p>{{ message | uppercase }}</p></div><script>// 定义全局过滤器Vue.filter('uppercase', function (value) {if (!value) return '';return value.toUpperCase();});const app = new Vue({el: '#app',data: {message: 'hello, vue!'}});</script>
</body></html>

在上述代码中,我们定义了名为 uppercase 的全局过滤器,它接受一个值并将其转换为大写字母形式,然后在模板中通过 {{ message | uppercase }} 的方式使用该过滤器对 message 数据进行处理。

2. 局部过滤器

除了全局过滤器,我们还可以在组件内部定义局部过滤器。例如:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Vue Local Filters Example</title><script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head><body><div id="app"><my-component></my-component></div><script>const app = new Vue({el: '#app',components: {'my-component': {template: '<div>{{ date | formatDate }}</div>',data() {return {date: new Date()};},filters: {// 定义局部过滤器formatDate(value) {const options = { year: 'numeric', month: 'long', day: 'numeric' };return value.toLocaleDateString(undefined, options);}}}}});</script>
</body></html>

这里在 my-component 组件内部定义了 formatDate 局部过滤器,用于将日期对象格式化为更易读的形式,并在组件模板中应用于 date 数据。

二、自定义指令(Custom Directives)

Vue 允许我们自定义指令,以实现对 DOM 元素的底层操作和更灵活的功能扩展。

1. 全局自定义指令

例如,创建一个自定义指令来设置元素的背景颜色:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Vue Custom Directives Example</title><script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head><body><div id="app"><div v-bg-color="'red'">This div has a custom background color.</div></div><script>// 定义全局自定义指令Vue.directive('bg-color', function (el, binding) {el.style.backgroundColor = binding.value;});const app = new Vue({el: '#app'});</script>
</body></html>

在这个例子中,我们使用 Vue.directive 方法定义了 v-bg-color 全局自定义指令,它接受一个值(这里是颜色字符串),并将对应的元素背景颜色设置为该值。

2. 局部自定义指令

局部自定义指令可以在组件内部定义和使用。例如:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Vue Local Custom Directives Example</title><script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head><body><div id="app"><my-component></my-component></div><script>const app = new Vue({el: '#app',components: {'my-component': {template: '<div v-local-color="color">This div has a local custom background color.</div>',data() {return {color: 'blue'};},directives: {// 定义局部自定义指令'local-color': function (el, binding) {el.style.backgroundColor = binding.value;}}}}});</script>
</body></html>

这里在 my-component 组件内定义了 v-local-color 局部自定义指令,用于设置组件内部元素的背景颜色。

三、过渡效果(Transitions)

Vue 提供了方便的过渡效果机制,让我们可以在元素插入、更新或移除时添加动画效果,增强用户体验。

1. 简单过渡示例

例如,我们创建一个淡入淡出效果的过渡:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Vue Transitions Example</title><script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script><style>.fade-enter-active,.fade-leave-active {transition: opacity 0.5s;}.fade-enter,.fade-leave-to {opacity: 0;}</style>
</head><body><div id="app"><button @click="show =!show">Toggle</button><transition name="fade"><p v-if="show">This is a fading element.</p></transition></div><script>const app = new Vue({el: '#app',data: {show: true}});</script>
</body></html>

在上述代码中,我们使用 transition 组件包裹需要添加过渡效果的元素,并通过 name 属性指定过渡类名的前缀(这里是 fade)。然后定义了对应的过渡类,如 .fade-enter-active 用于元素进入时的过渡动画,.fade-leave-active 用于元素离开时的过渡动画等。当点击按钮切换 show 变量的值时,p 元素会根据过渡类的定义产生淡入淡出的效果。

2. 过渡模式

Vue 还支持多种过渡模式,如 in-out(先进入后离开)、out-in(先离开后进入)等。例如:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Vue Transition Modes Example</title><script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script><style>.slide-enter-active,.slide-leave-active {transition: all 0.5s;}.slide-enter,.slide-leave-to {transform: translateX(100%);}</style>
</head><body><div id="app"><button @click="show =!show">Toggle</button><transition name="slide" mode="out-in"><p v-if="show">This is a sliding element.</p></transition></div><script>const app = new Vue({el: '#app',data: {show: true}});</script>
</body></html>

这里使用了 out-in 过渡模式,当切换元素显示状态时,先执行离开动画,然后再执行进入动画,实现了更流畅的过渡效果。

四、Vue 与后端数据交互

在实际应用中,Vue 通常需要与后端服务器进行数据交互,以获取和更新数据。我们可以使用 axios 等 HTTP 库来实现与后端的通信。

首先,引入 axios

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

然后,在 Vue 组件中进行数据请求和处理。例如,从后端获取一个用户列表并显示:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Vue Data Interaction Example</title><script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script><script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head><body><div id="app"><ul><li v-for="user in users" :key="user.id">{{ user.name }}</li></ul></div><script>const app = new Vue({el: '#app',data: {users: []},mounted() {axios.get('/api/users').then((response) => {this.users = response.data;});}});</script>
</body></html>

在上述代码中,在 mounted 生命周期钩子中使用 axios 发送 GET 请求到 /api/users 后端接口,获取用户数据,并将其赋值给 users 数据属性,然后在模板中通过 v-for 指令循环显示用户列表。

通过本教程的学习,你已经掌握了 Vue 的过滤器、自定义指令、过渡效果以及与后端数据交互等高级特性。这些特性将帮助你构建出更加专业和富有交互性的 Vue 应用程序。继续深入学习 Vue 的其他知识,如 Vue Router 路由管理、Vuex 状态管理等,你将能够开发出功能完备、大型复杂的前端项目。

如果在学习过程中有任何疑问或建议,欢迎在评论区留言交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/482656.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Robocasa】Code Review

文章目录 OverviewalgoInitializationImportant Class MethodsTrain LoopTest Time ConfigsdemoConfig FactoryConfig StructureConfig Locking默认锁定状态配置修改的上下文管理器 dataset示例数据集对象参数说明 model基础模块EncoderCoreVisualCoreScanCore随机化器 (Random…

阅读笔记--知识蒸馏

1.一些基本概念 教师模型&#xff08;Teacher Model&#xff09;&#xff1a;预训练复杂神经网络&#xff0c;高精度&#xff0c;计算存储开销大。学生模型&#xff08;Student Model&#xff09;&#xff1a;简单参数少推理快的模型&#xff0c;目标从教师模型获取知识&#…

【Maven Helper】分析依赖冲突案例

目录 Maven Helper实际案例java文件pom.xml文件运行抛出异常分析 参考资料 《咏鹅》骆宾王 鹅&#xff0c;鹅&#xff0c;鹅&#xff0c;曲项向天歌。 白毛浮绿水&#xff0c;红掌拨清波。 骆宾王是在自己7岁的时候就写下了这首杂言 Maven Helper A must have plugin for wor…

一些基于宏基因组的巨型病毒研究

Introduction 上次已经介绍了巨型病毒的一些基本内容&#xff0c;也讲到了不依赖培养的方法是从环境样本中发现巨型病毒基因组成的不可或缺的工具。可以通过基因组解析宏基因组学来从环境序列数据中获取 NCLDV 基因组并进行深入研究如功能基因&#xff0c;宿主&#xff0c;进化…

李宏毅深度强化学习入门笔记:Actor-Critic

李宏毅-深度强化学习-入门笔记&#xff1a;Actor-Critic 一、深度强化学习简介二、Policy-based 方法&#xff08;一&#xff09;学习一个 Actor&#xff08;二&#xff09;Deep Learning 的 3 个步骤1. 确定 Function&#xff1a;作为 Actor 的神经网络2. 确定 Actor 的好坏3.…

基于Java Springboot成人教育APP且微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信…

知乎启用AutoMQ替换Kafka,开辟成本优化与运维提效新纪元

作者&#xff1a;知乎在线架构组 王金龙 关于知乎 知乎公司&#xff0c;成立于 2010 年 8 月 10 日&#xff0c;于 2011 年 1 月 26 日正式上线&#xff0c;是中文互联网的高质量问答社区和创作者聚集的原创内容平台。 知乎起步于问答&#xff0c;而超越了问答。知乎以「生…

mysql数据库varchar截断问题

用了这么多年mysql数据库&#xff0c;才发现varchar是可以截断的&#xff0c;而且是在我们线上数据库。个人觉得dba的这个设置是非常有问题的&#xff0c;用户往数据库里存东西&#xff0c;就是为了以后用的&#xff0c;截断了存放&#xff0c;数据不完整&#xff0c;就用不了了…

SeggisV1.0 遥感影像分割软件【源代码】讲解

在此基础上进行二次开发&#xff0c;开发自己的软件&#xff0c;例如&#xff1a;【1】无人机及个人私有影像识别【2】离线使用【3】变化监测模型集成【4】个人私有分割模型集成等等&#xff0c;不管是您用来个人学习还是公司研发需求&#xff0c;都相当合适&#xff0c;包您满…

MySQL底层概述—9.ACID与事务

大纲 1.ACID之原子性 2.ACID之持久性 3.ACID之隔离性 4.ACID之一致性 5.ACID的关系 6.事务控制演进之排队 7.事务控制演进之排它锁 8.事务控制演进之读写锁 9.事务控制演进之MVCC 10.事务隔离级别之隔离级别的类型 11.事务隔离级别之和锁的关系 12.事务隔离级别之隔…

基于 SpringBoot 的新冠密接者跟踪系统:如何实现高效信息推送功能

第2章 程序开发技术 2.1 Mysql数据库 为了更容易理解Mysql数据库&#xff0c;接下来就对其具备的主要特征进行描述。 &#xff08;1&#xff09;首选Mysql数据库也是为了节省开发资金&#xff0c;因为网络上对Mysql的源码都已进行了公开展示&#xff0c;开发者根据程序开发需要…

手撸了一个文件传输工具

在日常的开发与运维中&#xff0c;文件传输工具是不可或缺的利器。无论是跨服务器传递配置文件&#xff0c;还是快速从一台机器下载日志文件&#xff0c;一个高效、可靠且简单的文件传输工具能够显著提高工作效率。今天&#xff0c;我想分享我自己手撸一个文件传输工具的全过程…

基于Java Springboot电子书阅读器APP且微信小程序

一、作品包含 源码数据库全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信开发者工具 数…

【AI系统】AI 编译器基本架构

AI 编译器基本架构 在上一篇文章中将 AI 编译器的发展大致分为了 3 个阶段&#xff0c;分别为 1&#xff09;朴素编译器、2&#xff09;专用编译器以及 3&#xff09;通用编译器。 本文作为上一篇文章 AI 编译器架构的一个延续&#xff0c;着重讨论 AI 编译器的通用架构。首先…

华为关键词覆盖应用市场ASO优化覆盖技巧

在我国的消费者群体当中&#xff0c;华为的品牌形象较高&#xff0c;且产品质量过硬&#xff0c;因此用户基数也大。与此同时&#xff0c;随着影响力的增大&#xff0c;华为不断向外扩张&#xff0c;也逐渐成为了海外市场的香饽饽。作为开发者和运营者&#xff0c;我们要认识到…

SuperMap GIS基础产品FAQ集锦(20241202)

一、SuperMap iDesktopX 问题1&#xff1a;请问一下&#xff0c;iDesktopX11.2.1如何修改启动界面 11.2.0 【解决办法】参考帮助文档的“自定义启动界面”内容&#xff1a;https://help.supermap.com/iDesktopX/zh/SpecialFeatures/Development/DevelopmentTutorial/UserCust…

Java基础访问修饰符全解析

一、Java 访问修饰符概述 Java 中的访问修饰符用于控制类、方法、变量和构造函数的可见性和访问权限&#xff0c;主要有四种&#xff1a;public、protected、default&#xff08;无修饰符&#xff09;和 private。 Java 的访问修饰符在编程中起着至关重要的作用&#xff0c;它…

浪潮X86服务器NF5280、8480、5468、5270使用inter VROC Raid key给NVME磁盘做阵列

Inter VROC技术简介 Intel Virtual RAID on CPU (Intel VROC) 简单来说就是用CPU的PCIE通道给NVME硬盘做Raid 更多信息可以访问官方支持页面 Raid Key 授权&#xff0c;即VROC SKU 授权主要有用的有2个标准和高级&#xff0c;仅Raid1的授权我暂时没见过。 标准 VROCSTANMOD …

【Pytorch】torch.view与torch.reshape的区别

文章目录 一. 简介&#xff1a;二. Pytorch中Tensor的存储方式2.1 Pytorch中张量存储的底层原理2.2 Pytorch张量步长(stride)属性 三. 对视图(view)的理解四. view()与reshape()的比较4.1 对view()的理解4.1.1 &#xff08;1&#xff09;如何理解满足条件 stride[i] stride[i1…

光伏电站设计排布前的准备

1、确定安装地点 地理位置&#xff1a;了解安装地点的经纬度&#xff0c;这对于确定太阳辐射角度和强度非常重要&#xff0c;海拔越高&#xff0c;阳光辐照就越高&#xff0c;比较适合安装光伏电站&#xff0c;根据地理位置还可以确定光伏板的安装倾角是多少&#xff0c;可以进…