Vue.js基础语法下

news2024/11/18 19:35:18

                                   

                                        🎬 艳艳耶✌️:个人主页

                                        🔥 个人专栏 :《Spring与Mybatis集成整合》《springMvc使用》

                                         ⛺️ 生活的理想,为了不断更新自己 !
 

1、事件处理器

1.1. 概述

在Vue中,事件处理器是用来处理DOM事件的方法。它可以在Vue组件中定义和使用,用于响应用户的交互操作。

事件处理器的作用是监听DOM事件,并在事件触发时执行相应的逻辑代码。通过事件处理器,可以实现用户与页面的交互,例如点击按钮、输入文本等操作。当事件被触发时,事件处理器会被调用,可以执行一些逻辑操作,比如更新数据、调用方法等。

事件处理器可以接收事件对象作为参数,可以通过参数来获取事件的相关信息,如鼠标位置、键盘按键等。

事件处理器的主要作用有以下几个方面:

  • 监听DOM事件:通过事件处理器,可以监听各种DOM事件,如点击、鼠标移入移出、键盘输入等。当事件触发时,事件处理器会被调用。
  • 响应用户交互:通过事件处理器,可以实现用户与页面的交互。比如,可以通过点击按钮触发事件处理器来执行一些逻辑操作,如提交表单、发送请求等。
  • 更新数据:事件处理器可以修改Vue实例中的数据,从而更新页面的显示。例如,可以在点击按钮时,通过事件处理器修改数据的值,从而改变页面的状态。
  • 调用方法:事件处理器可以调用Vue实例中定义的方法。这样可以实现更复杂的逻辑操作,如计算、数据处理等。
  • 传递参数:事件处理器可以接收事件对象作为参数,也可以通过事件对象传递其他参数。这样可以在事件处理器中获取事件的相关信息,如鼠标位置、键盘按键等。

总结,事件处理器在Vue中起到了监听和响应用户交互操作的作用,使得页面具有更好的交互性和动态性。通过事件处理器,可以实现各种交互功能,并对页面进行动态更新和操作。

1.2. 实例 

事件修饰符

在Vue中,事件处理器可以使用一些修饰符来改变其行为。以下是一些常用的事件修饰符:

  •  stop:阻止事件冒泡。使用该修饰符可以阻止事件向父元素传播。
  • prevent:阻止默认事件。使用该修饰符可以阻止事件的默认行为。
  • capture:使用事件捕获模式。默认情况下,事件是在冒泡阶段处理的,使用该修饰符可以改为在捕获阶段处理。
  • self:只在事件触发的元素自身上触发事件处理器。如果事件是由子元素触发的,使用`.self`修饰符可以阻止事件处理器执行。
  • once:只触发一次事件处理器。使用该修饰符可以确保事件处理器只执行一次。
  •  passive:提升滚动性能。如果事件处理器中没有调用preventDefault()阻止默认事件,可以使用`.passive`修饰符来告诉浏览器该事件处理器不会阻止默认事件,从而提升滚动的性能。

除了上述修饰符,Vue还提供了一些按键修饰符,用于处理特定的键盘事件。如下:

  • enter :按下回车键触发事件处理器。
  • tab :按下Tab键触发事件处理器。
  • delete :按下删除键触发事件处理器。
  • esc :按下Esc键触发事件处理器。
  • space :按下空格键触发事件处理器。

首先创建 HTML 文件,进行事件处理器的实例验证

代码展示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
	     <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
		<title>事件处理</title>
		<style type="text/css">
			.one{
				background-color: aquamarine;
				height: 500px;
				width: 500px;
			}
			.two{
				background-color: palegoldenrod;
				height: 400px;
				width: 400px;
			}
			.three{
				background-color: paleturquoise;
				height: 300px;
				width: 300px;
			}
			.four{
				background-color: pink;
				height: 200px;
				width: 200px;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<div class="one" @click="fun1">
				<div class="two" @click="fun2">
					<div class="three" @click="fun3">
						<div class="four" @click="fun4">
							
						</div>
					</div>
				</div>
			</div>
			<input :value="msg"/>
			<button @click="clickMe">点我</button>
		</div>
		
		<script type="text/javascript">
			new Vue({
				el:'#app',
				data(){
					return{
					msg:'hello a',
					};
				},
				methods:{
					fun1(){
						alert("公主驾到通通闪开1")
					},
					fun2(){
						alert("公主驾到通通闪开2")
					},
					fun3(){
						alert("公主驾到通通闪开3")
					},
					fun4(){
						alert("公主驾到通通闪开4")
					},
					clickMe(){
						alert(this.msg);
					}
				}
			})
			</script>
	</body>
</html>

结果:

2、语法整合

2.1实例

代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
	     <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
		<title>事件处理</title>
	</head>
	<body>
		<div id="app">
			姓名:<input name="name" v-model="msg"  /><br />
			密码:<input name="password" v-model="pwd" /><br />
			性别:<span v-for="s in setList">
				  <input type="radio" name="sex" v-model="sex" :value="s.id"/>{{s.name}}
				 </span><br />
			籍贯:<select name="myAddr" v-model="myAddr">
				<option v-for="a in address"   :value="a.id">{{a.name}}</option>
				</select><br />
			爱好:<span v-for="h in hobby" >
				<input type="checkbox" v-model="myLike" name="myLike"  :value="h.id"/>{{h.name}}
			</span><br />
			<div style="height: 100px;width: 100px;">
				<span style="margin-bottom: 40px;">个人简介:</span><textarea v-model="sign" cols="10" rows="5"></textarea>
			</div>
			<input type="checkbox" v-model="ok"/>同意<br />
			<button @click="dosub">提交</button>
		</div>
		
		<script type="text/javascript">
			new Vue({
				el:'#app',
				data(){
					return{
					msg:'小花',
					pwd:'123456',
					setList:[{
						name:'男',id:1
					},{
						name:'女',id:2
					}],
					sex:1,
					hobby:[{
					name:'吃汉堡',id:1
					},{
					name:'吃炸鸡',id:2
					},{
					name:'喝可乐',id:3
					},{
					name:'吃薯条',id:4
					}],
					myLike:[],
					address:[{
					name:'湖南',id:1
					},{
					name:'上海',id:2
					},{
					name:'杭州',id:3
					},{
					name:'北京',id:4
					}],
					myAddr:null,
					sign:null,
					ok:false,
					};
				},
				methods:{
					dosub(){
						var obj ={};
						obj.msg =this.msg;
						obj.pwd =this.pwd;
						obj.sex =this.sex;
						obj.address =this.myAddr;
						obj.love =this.myLike;
						obj.sign =this.sign;
						console.log(obj);
					}
				}
			});
			</script>
	</body>
</html> 

结果:

3、自定义组件

3.1实例

代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>自定义组件</title>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
	</head>
	<body>
		<!-- 定义边界 -->
			<div id="app">
				<p>自定义组件</p>
				<my-button ></my-button>
			</div>
		<script type="text/javascript">
			// 构建vue实例并绑定边界
			new Vue({
				el: '#app',
				components:{
					'my-button':{
						template:'<button @click="tan">快快点我</button>',
						methods:{
							tan(){
								alert("公主驾到通通闪开")
							}
						}
					}
				}
			})
		</script>
	</body>
</html>

结果:

4、组件通信

在Vue中,组件通信是指不同组件之间进行数据传递和交互的过程。Vue提供了多种方式来实现组件通信,包括父子组件通信、兄弟组件通信和跨级组件通信等。

  • 父子组件通信:父组件通过props向子组件传递数据,子组件通过props接收父组件传递的数据。这种通信方式适用于父组件向子组件传递数据的场景。
  • 子组件向父组件通信:子组件通过$emit方法触发一个自定义事件,父组件通过v-on指令监听并响应该事件。这种通信方式适用于子组件向父组件传递数据或触发某个事件的场景。
  • 兄弟组件通信:可以通过一个共同的父组件来实现兄弟组件之间的通信。父组件作为中介,接收一个组件的数据并通过props传递给另一个组件。这种通信方式适用于兄弟组件之间需要共享数据的场景。
  • 跨级组件通信:可以通过provide/inject来实现跨级组件之间的通信。父组件通过provide提供数据,子孙组件通过inject注入数据。这种通信方式适用于跨越多层级的组件之间需要共享数据的场景。
  • 使用事件总线:可以创建一个全局的Vue实例作为事件总线,组件通过emit和on来触发和监听事件。这种通信方式适用于任意组件之间需要进行事件交互的场景。
  • 使用Vuex进行状态管理:Vuex是Vue官方提供的状态管理库,可以将共享的状态保存在一个全局的store中,不同的组件可以通过store来读取和修改共享的状态。这种通信方式适用于组件之间需要共享状态的场景。

组件通信的作用主要有以下几点:

  •       数据传递:通过组件通信,可以将数据从一个组件传递到另一个组件。比如,父组件可以向子组件传递数据,子组件可以通过props来接收父组件传递的数据。这样可以实现组件之间的数据共享和传递,方便进行组件间的数据交流和协作。
  • 事件触发:通过组件通信,可以在一个组件中触发事件,并在其他组件中监听和响应该事件。比如,子组件可以通过$emit方法触发一个事件,父组件可以通过v-on指令监听并响应该事件。这样可以实现组件之间的交互和通信,方便进行组件间的事件处理和逻辑调用。
  • 共享状态:通过组件通信,可以实现组件之间的状态共享。比如,使用Vuex进行状态管理,可以将状态保存在一个全局的store中,不同的组件可以通过store来读取和修改共享的状态。这样可以实现组件之间的状态同步和数据共享,方便进行组件间的状态管理和数据更新。
  • 组件复用:通过组件通信,可以实现组件的复用。比如,可以将一些常用的UI组件封装成独立的组件,然后在不同的页面中复用这些组件。这样可以减少重复编写相似代码的工作量,提高开发效率和代码的复用性。

总结:组件通信是Vue中非常重要的概念,它可以实现组件之间的数据传递、事件触发、状态共享和组件复用等功能。通过合理使用组件通信,可以更好地组织和管理Vue项目的代码,提高开发效率和代码质量。

4.1父传子

组件通信中父传子是Vue中常用的组件通信方式之一,它可以实现父组件向子组件传递数据、实现组件的复用和解耦、实现数据的传递和共享等功能。通过合理使用父传子,可以更好地组织和管理Vue项目的代码,提高开发效率和代码质量。

代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>组件通信</title>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
	</head>
	<body>
		<!-- 定义边界 -->
			<div id="app">
				<p>组件通信----父传子</p>
				<my-button a="看看我的" b="5"></my-button>
			</div>
		<script type="text/javascript">
			// 构建vue实例并绑定边界
			new Vue({
				el: '#app',
				components:{
					'my-button':{
						props:['a','b'],
						template:'<button @click="tan">{{a}},{{b}} 小啾啾</button>',
						data:function(){
							return {b:1}
						},
						methods:{
							tan(){
								this.b++;
							}
						}
					}
				}
			})
		</script>
	</body>
</html>

结果:

4.2子传父

组件通信中子传父是Vue中常用的组件通信方式之一,它可以实现子组件向父组件传递数据、实现组件的解耦和复用、实现数据的传递和共享等功能。通过合理使用子传父,可以更好地组织和管理Vue项目的代码,提高开发效率和代码质量。

代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>组件通信</title>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
	</head>
	<body>
		<!-- 定义边界 -->
			<div id="app">
				<p>组件通信----子传父</p>
				<my-button b="搞蛋搞蛋" @传值="getParam"></my-button>
			</div>
		<script type="text/javascript">
			// 构建vue实例并绑定边界
			new Vue({
				el: '#app',
				components:{
					'my-button':{
						props:['b'],
						template:'<button @click="tan">金币金币!{{o}}金币!</button>',
						data:function(){
							return {o:0}
						},
						methods:{
							//在组件内部定义值
							tan(){
								this.o++;
								let name = '蛋搭子';
								let bname = '蛋仔派对';
								let price = 18.8;
								this.$emit('传值',name,bname,price)
							}
						}
					}
				},
				methods:{
					getParam(name,bname,price){
						console.log("创建者:"+name+",名字:"+bname+",价格:"+price);
					}
				}
			})
		</script>
	</body>
</html>

结果:

今日分享就结束!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

230920_整合微信支付宝支付

整合微信支付宝支付 一. 微信支付1. 支付中心_订单表Orders结构2. 微信支付时序图2.1 参考文档2.2 二维码支付时序图 一. 微信支付 1. 支付中心_订单表Orders结构 2. 微信支付时序图 2.1 参考文档 微信支付开发文档首页微信_native二维码支付文档微信支付文档 2.2 二维码支…

全链路自动化测试

背景 从 SOA 架构到现在大行其道的微服务架构&#xff0c;系统越拆越小&#xff0c;整体架构的复杂度也是直线上升&#xff0c;我们一直老生常谈的微服务架构下的技术难点及解决方案也日渐成熟&#xff08;包括典型的数据一致性&#xff0c;系统调用带来的一致性问题&#xff…

【Linux】【网络】应用层协议:HTTPS

文章目录 HTTPS1. 加密方式2. 数据摘要 \ 数据指纹3. 数字签名 HTTPS 的 工作过程HTTPS 工作过程中的密钥 HTTP HTTPS HTTP&#xff08;HyperText Transfer Protocol&#xff09;&#xff1a; 是客户端浏览器或其他程序与 Web 服务器之间的应用层通信协议。 HTTPS&#xff0…

创建一个普通的vue项目

1.用HbuilderX工具开发&#xff0c;新建项目时选择vue2.6.10 2.点击新建终端&#xff0c;输入npm run serve命令 3.vue项目配置elementui 可以按照官方方法使用npm i element-ui -S命令进行安装 在main.js配置3行&#xff0c;且要在最前面 1.import ElementUI from ‘elemen…

什么是VLAN?VLAN是如何工作的?

【微|信|公|众|号&#xff1a;厦门微思网络】 VLAN&#xff08;Virtual Local Area Network&#xff09;即虚拟局域网&#xff0c;是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。 每个VLAN是一个广播域&#xff0c;VLAN内的主机间可以直接通信&#xff0c;而VLAN间则…

解锁搜索新境界!让文本语义匹配助你轻松找到你需要的一切!(快速上手baseline)

解锁搜索新境界&#xff01;让文本语义匹配助你轻松找到你需要的一切&#xff01;(快速上手baseline) 实现了多种相似度计算、匹配搜索算法&#xff0c;支持文本、图像&#xff0c;python3开发&#xff0c;pip安装&#xff0c;开箱即用。 文本相似度计算&#xff08;文本匹配&…

【图像去噪】【TGV 正则器的快速计算方法】通过FFT的总(广义)变化进行图像去噪(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

jedis实现分布式锁案例:

一、redis配置类&#xff1a; import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration;Configuration Data public class JedisConfig {Value("${spring.redis.host}")priv…

行业报告:视频直播美颜sdk对互联网直播产业的影响与前景

随着互联网直播产业的不断崛起&#xff0c;直播内容的质量和用户体验已成为成功的关键因素之一。本篇报告将深入研究视频直播美颜sdk对互联网直播产业的影响&#xff0c;并探讨其未来的前景。 第一章&#xff1a;视频直播美颜sdk的基本概念 1.1 什么是视频直播美颜 SDK&#x…

【音视频】H264视频压缩格式

H264简介 H.264从1999年开始&#xff0c;到2003年形成草案&#xff0c;最后在2007年定稿有待核实。在ITU的标准里称为H.264, 在MPEG的标准里是MPEG-4的一个组成部分-MPEG-4 Part 10&#xff0c;又叫Advanced Video Codec&#xff0c;因此常常称为MPEG-4AVC或直接叫AVC。 压缩算…

RabbitMQ —— 深入发布确认

前言 面对在实际的生产环境中RabbitMQ服务宕机或者重启导致消息在投递阶段丢失的问题&#xff0c;我们需要采用消息的发布确认和回退消息两种机制来保证消息的不丢失。在这篇文章中&#xff0c;荔枝同样以demo实例的方式来梳理相关的知识&#xff0c;希望能够帮助到有需要的小伙…

土耳其市场最全开发攻略

2023年6月1日起&#xff0c;亚马逊土耳其站开始正式面向中国卖家试运营。土耳其这个古丝绸之路西域的重要节点&#xff0c;再一次吸引了来自东方众商家的目光。 土耳其是一个著名的贸易中心&#xff0c;向世界提供许多出口产品。土耳其总统埃尔多安指出&#xff0c;根据调整后…

[Linux 基础] linux基础指令(2)head,tail,Cal,find,grep,zip/unzip,tar,bc,uname

文章目录 1、head指令2、tail指令引申&#xff1a;如何拿到中间行内容方案一&#xff1a;方案二&#xff1a;方案三&#xff1a; 补充指令&#xff1a;(1) wc -l 文件名(2) uniq 文件名(3) sort 文件名 3、时间相关的指令4、Cal指令5、find指令&#xff1a;&#xff08;灰常重要…

如何设置代理ip服务器地址

目录 前言 一、使用HTTP代理服务器 1. Python代码 2. Java代码 二、使用SOCKS代理服务器 1. Python代码 2. Java代码 三、使用代理池 1. Python代码 2. Java代码 总结 前言 代理服务器是一种可以隐藏真实IP地址并且保护用户隐私的工具。在某些情况下&#xff0c;比…

「聊设计模式」之备忘录模式(Memento)

&#x1f3c6;本文收录于《聊设计模式》专栏&#xff0c;专门攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎持续关注&&收藏&&订阅&#xff01; 前言 设计模式是软件设计中经典的解决方案&#xff0c;旨在解决…

中科驭数联合处理器芯片全国重点实验室获得FPL 2023最佳论文奖

在2023年的FPGA领域顶级会议FPL (International Conference on Field Programmable Logic and Applications) 上&#xff0c;由中科驭数团队、中国科学院计算技术研究所处理器芯片全国重点实验室团队共同完成的论文《Co-ViSu: a Video Super-Resolution Accelerator Exploiting…

高教杯数学建模竞赛A题文章写作要点与示范

数学建模竞赛写作最重要的一点 LaTeX 很重要 非常重要 非常重要一定要规范 美观 写作注意事项 标准的附录详实的支撑材料和清晰的支撑材料说明 文章中所有的图片都应该包含在支撑材料中正确得引用参考文献模型的评价部分应当包含 模型优点模型缺点改进方案图像绘制应当标准假设…

通过uni.chooseImage返回的临时路径转为base64

uniapp官方API文档&#xff1a;https://uniapp.dcloud.net.cn/api/media/image.html#chooseimage 代码在后面 chooseimage的succes函数中的res.tempFilePaths&#xff0c;是图片的一个临时路径&#xff0c;没法直接传给后端接口使用&#xff0c;且接口需要的是base64格式的 ge…

使用dokcer部署分布式任务调度平台XXL-JOB

XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 部署docker略有需要看下面文档即可 ​​​​​​yum安装docker以及安装指定版本docker_yum安装指定版本dock…

迅为RK3588开发板修改编译工具路径

1 因为此章节以 rknn_yolov5_demo 在 RK3588 Linux 64 位平台上运行为例&#xff0c;所以修改 examples/rknn_yolov5_demo/build-XXX.sh 的编译工具路径&#xff0c;如下图所示&#xff1a; 2 修改 build-linux_RK3588.sh 文件&#xff0c;将 TOOL_CHAIN 修改为 gcc-arm-10.3…