vue组件

news2024/11/16 8:58:24

9.Vue组件

组件(Component)是 Vue.js 最强大的功能之一。

组件可以扩展 HTML 元素,封装可重用的代码。

组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树:

在这里插入图片描述

9.1全局组件

所有实例都能用全局组件。

案例1:

    <div id="app">
        <mycomponent></mycomponent>
    </div>
     <script>
 	    //注册组件
         Vue.component("mycomponent",{
             template:'<li>这里是组件的内容</li>'
         });
         var v= new Vue({
             el:"#app",
         });
     </script>

说明:

注册组件
Vue.component("组件名称",{组件的属性})

案例2:

     	<div id="app">
			 <mymenu></mymenu>
		</div>
		
		<script>
			
		//注册组件	  mymenu:组件的名字  {}里面是组件的属性配置
		Vue.component("mymenu",{
			
			
		//data数据,这里的数据和vue实例中的数据不同,这里data类型是函数而非对象。	
		data:function(){
			return{
				count:0
			}
		},
		
		//组件的模板只能有一个根元素 
	    template:'<div><input type="button" value="-" @click="sub" />'+
	    '<input type="num" :value="count" /><input type="button" value="+" @click="plus" /></div>',
	    
	    //需要用到的方法
	    methods:{
	    	sub:function(){
	    		this.count--;
	    	},
	    	plus:function(){
	    		this.count++;
	    	}
	    	
	    }
	})
		
		
	var  v=new Vue({
		el:"#app"
	})
	</script>

9.2 如何在其它html页面访问vue组件

1.将组件内容写入一个vue页面中

welcome.vue

<template>
	<div>欢迎您!!{{msg}}</div>
</template>

<script>
module.exports = {
	
	data:function(){
		return {
				msg:"daimenglaoshi"
				}
		}
}
</script>


2.在html页面中导入vue组件并使用

因为html中不能直接使用vue页面的内容,需要用到插件http-vue-loader。

下载http-vue-loader.js文件 或者在线调用:

<script src="https://unpkg.com/http-vue-loader"></script>

html中调用:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript" src="js/vue.js" ></script>
		<script type="text/javascript" src="js/http_vue_loader.js" ></script>
	</head>
	<body>
		
		<div id="app">
			<welcome></welcome>
			<welcome></welcome>
			<welcome></welcome>
		</div>
		
		<script>
			
			var v=new Vue({
				
				el:"#app",
				components:{
					"welcome":httpVueLoader("welcome.vue")
				}
				
			})
			
			
		</script>
		
	</body>
</html>

9.3 局部组件

一旦全局注册,就意味着即便以后你不再使用这个组件,它依然会随着Vue的加载而加载。

因此,对于一些并不频繁使用的组件,我们会采用局部注册。

案例代码:

      <div id="app">
			
			<welcome></welcome>
			
		</div>
	
	    <script>
	    	
	    	var msg = {
			    template:"<div>您好,{{name}}</div>",
			    data(){
			        return{
			            name:"呆萌老师"
			        }
			    }
			}
	    	
	    	//该组件只在本Vue实例中使用
	    	
	    	var v=new Vue({
	    		
	    		el:"#app",
	    		
	    		components:{
	    			
	    			welcome:msg
	    		}
	    		
	    	})
	    	
	    </script>

9.4 父子组件

组件可以嵌套,父组件中可以套入一个子组件

测试代码:

        <div id="app">
			
			<father></father>
			
		</div>
		
		<script>
		
		    //注册父组件
			
			Vue.component("father",{
				
				template:"<div style='background-color:red'><p>我是一个父组件</p><son></son></div>",
				
				//父组件中添加子组件
				
				components:{
					
					son:{
						
						template:"<span style='background-color:yellow'>我是一个子组件</span>"
					}					
				}				
				
			})
			
			var v=new Vue({
				
				el:"#app"
				
			})
			
			
		</script>

9.5使用 props 属性动态传递参数

格式:props:['value']    data里面的数据会传递到组件里的props属性

案例代码1:

   <!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript" src="js/vue.js" ></script>
	</head>
	<body>
		
		<div id="app">
			
			<show v-for="item in items" v-html="item" ></show>
			
		</div>
		
		<script>
			
			Vue.component("show",{
				
				props:['value'],
				template:"<li>{{value}}</li>"				
			})
			
			var v=new Vue({
				
				el:"#app",
				data:{
					items:['吃饭','睡觉','打豆豆']
				}
				
			})
			
		</script>
		
		
	</body>
</html>

案例代码2:

	<div id="app">
	
	       <!-- 改变文本框的值,组件中的值也会变 -->
			<input type="text" v-model="item" />
	
	        <mydiv v-html="item"></mydiv>
        </div>
        
        
     <script>
         Vue.component("mydiv",{
             props:['value'],
             template:'<li>{{value}}</li>'
         });
         var app = new Vue({
             el:"#app",
             data:{
                 item:'呆萌'
             }
         });
     </script>

在这里插入图片描述

10.Watch 选项

vue的选项很多,除了前面用到的el,data,methods等,还有其它的。比如Watch

数据变化的监控经常使用,例如天气预报的穿衣指数,它主要是根据温度来进行提示的。温度大于25度时,我们建议穿T恤短袖,温度小于25度大于0度时,我们建议穿毛衣外套,温度小于0度时我们建议穿棉衣羽绒服。

测试案例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript" src="js/vue.js" ></script>
	</head>
	<body>		
		
		输入温度,显示穿衣指数
		<div id="app">			
			<p>温度:{{temperature}}</p>
			<p>穿衣建议:{{advise}}</p>			
			输入温度:<input type="text" v-model="temperature"  />			
		</div>
		
		<script>
			
			var v=new Vue({
				
				el:"#app",
				data:{
					temperature:"",
					advise:""
				},
				//监控温度的变化
				watch:{
					temperature:function(newVal,oldVal){
						
						  if (newVal > 25) {
		                        this.advise ="建议穿T恤短袖";
		                    } else if (newVal >= 0 && newVal <= 25) {
		                        this.advise ="建议穿毛衣外套";
		                    } else {
		                       this.advise ="建议穿棉服羽绒服";
		                    }								
					}
				}
			})			
		</script>		
	</body>
</html>

测试结果:

在这里插入图片描述

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

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

相关文章

SpringBoot 自定义starter yaml提示失效问题

自定义starter yaml提示失效问题自定义starter yaml提示失效问题问题场景解决办法自定义starter yaml提示失效问题 问题场景 在自定义starter后&#xff0c;必不可少会有properties配置参数需要指定&#xff0c;而在有时又不知道为什么出现这个问题。官方 Configuration Meta…

玩以太坊链上项目的必备技能(OOP-抽象合约-Solidity之旅十)

抽象合约&#xff08;abstract contract&#xff09; 前文在讲合约继承的基类构造函数的参数时&#xff0c;有提到抽象合约&#xff0c;也就是说&#xff0c;如果派生合约未能给其继承的基合约指定构造函数参数时&#xff0c;那么&#xff0c;该派生合约必须声明为抽象合约&am…

ubuntu中安装tippecanoe并切片

概述 本文是一片”水文”&#xff0c;记录一下如何在ubuntu中用tippecanoe制作矢量切片。 实现操作 本示例中ubuntu是在VMware虚拟机中&#xff0c;安装的是18.04.6的版本&#xff0c;你可通过我兰的镜像下载&#xff0c;速度杠杠的。 1.安装git sudo apt install git2.cl…

探索SpringMVC-HandlerMapping之RequestMappingHandlerMapping

前言 上回我们知道HandlerMapping是用来寻找Handler的&#xff0c;并不与Handler的类型或者实现绑定&#xff0c;而是根据需要定义的。那么为什么要单独给RequestMapping实现一个HandlerMapping&#xff1f;这次咱们就来专门看看这个RequestMappingHandlerMapping。 RequestM…

Educational Codeforces Round 139 (Rated for Div. 2)(A~E)

A. Extremely Round 定义一个数中仅存在一位非0&#xff0c;它是extremely round&#xff0c;计算1~n中有几个满足条件的数。 思路&#xff1a;直接计算即可。 AC Code&#xff1a; #include <bits/stdc.h>typedef long long ll; const int N 1e5 5; int t, n;int c…

高手必备10大难题:Mysql如何实现RR级隔离时,不会幻读?

文章很长&#xff0c;而且持续更新&#xff0c;建议收藏起来&#xff0c;慢慢读&#xff01;疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 &#xff1a; 免费赠送 :《尼恩Java面试宝典》 持续更新 史上最全 面试必备 2000页 面试必备 大厂必备 涨薪必备 免费赠送 经典…

[2022-12-17]神经网络与深度学习第5章 - 循环神经网络(part 1)

contents循环神经网络 part 1 - RNN记忆能力实验写在开头循环神经网络的记忆能力实验数据集构建数据集构建函数数据集加载构建 Dataset类模型构建嵌入层SRN层自己实现torch框架实现比较线性层模型汇总模型训练训练指定长度的数字预测模型模型评价写在最后循环神经网络 part 1 -…

[机器人学习]-树莓派6R机械臂运动学分析

根据D-H表规定得到如下变换矩阵为&#xff1a; 由此可得机器人相邻两关节位姿分别为&#xff1a; 根据DH参数求解变换矩阵的函数trans&#xff1a; %输入JD&#xff0c;即6个关节变量的值&#xff0c;求解正运动方程 function [ T ] trans( theta, d, a, alpha ) T [ cos(th…

Java中Stream的 flatMap 与 map 实际使用场景与区别对比

基本概念 Stream 流式操作&#xff0c;一般用于操作集合即 List 一类的数据结构&#xff0c;JDK 1.8 后的新特性 Stream 中的 map 一般用于对List 中的每一个元素执行指定方法使得最终结果为最终的集合为每一个记录的某一属性的集合&#xff08;get 方法&#xff09;或者通过…

PPT怎么转PDF?将Powerpoint(PPT)转换为PDF方法分享

当您在PowerPoint中创建精美的演示文稿时&#xff0c;您不仅想给观众留下深刻的印象&#xff0c;还希望它能够方便地打包&#xff0c;并且文件格式起着重要作用。虽然PPTX是一种广泛传播的格式&#xff0c;但PDF始终是一个安全的选择。以下是有关如何使用在线工具将PowerPoint演…

每天五分钟机器学习:主成分分析算法PCA的降维原理是什么?

本文重点 当数据从n维降到k维的时候,我们需要找到一个能使得投影误差最小的k维向量构成的投影平面,然后将数据进行投影,从而达到降维的作用。所以PCA算法要做的就是两件事情,一件事情就是计算最优的k维向量,另一个问题就是计算原来样本点映射到降维面的z(i),也就是这些新…

【C++初阶】模板初阶、STL简介

文章目录模板初阶泛型编程函数模板类模板STL简介什么是STLSTL的六大组件STL的缺陷模板初阶 泛型编程 概念 泛型编程&#xff1a;编写与类型无关的通用代码&#xff0c;是代码复用的一种手段。模板是泛型编程的基础。 函数模板 概念 函数模板代表了一个函数家族&#xff0c;…

搜索与图论 - spfa 算法

文章目录一、spfa 算法1. spfa 算法简介2. spfa 算法和 bellman-ford 算法的区别3. spfa 算法和 dijkstra 算法的区别4. spfa 算法实现步骤5. spfa 算法举例图解6. spfa 算法用于求最短路和判断负环&#xff0c;详见下面两道例题。二、spfa 算法例题—— spfa 求最短路具体实现…

1. SpringBoot 整合 Canal

勿以恶小而为之&#xff0c;勿以善小而不为----- 刘备 SpringBoot 整合 Canal pom.xml 添加 canal.client 依赖 (1.1.5 改动很大&#xff0c;这儿客户端用 1.1.4) <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.a…

【云原生进阶之容器】第一章Docker核心技术1.5.3节——cgroups数据结构剖析

1 cgroups数据结构解析 从进程的角度出发来剖析 cgroups 相关数据结构之间的关系。在 Linux 中管理进程的数据结构是 task_struct。cgroup表示进程的行为控制,因为子系统必须要知道进程是位于哪一个cgroup,所以在struct task_struct和cgroup中存在一种映射。 1.1 task_struc…

【数据结构进阶】二叉平衡树

一、 二叉平衡树 概念 二叉搜索树有称 二叉排序树&#xff0c;它也可以是一个空树。 如果它的左子树不为空&#xff0c;则左子树上所有结点的值都小于根结点的值如果他的右子树不为空&#xff0c;则右子树上所有结点的值都大于根结点的值它的左右子树也分别是二叉搜索树 由…

【Acwing 周赛#82】AcWing 4783. 多米诺骨牌

目录 4782.第k个数 4783. 多米诺骨牌 - bfs 记录时间 4782.第k个数 java大顶堆 import java.util.*;public class Main {public static void main(String[] args ){Scanner scnew Scanner(System.in);int nsc.nextInt(),ksc.nextInt();k--;PriorityQueue<Integer> qn…

HarmonyOS玩转ArkUI动效 - 水母动画

前言 本文会详细讲解我参加&#xff1a; HarmonyOS【挑战赛第三期】玩转ArkUI动效的项目 我的参赛项目源码&#xff1a;【挑战赛第三期】JellyfishAnimation 动画效果参考自&#xff1a;cassie-codes的水母SVG 华为鸿蒙已经放弃Java作为鸿蒙的开发语言&#xff0c;开发了一个申…

基于java+springmvc+mybatis+vue+mysql的校运会管理系统小程序

项目介绍 运动是伴随人类一生的一种行为和活动&#xff0c;只有不断的运动才能够彰显生命的意义&#xff0c;尤其是当代的学生&#xff0c;课业繁重往往忽略了体育锻炼&#xff0c;为了能够提高学子们对体育运动的积极性&#xff0c;基本所有的高校每年都会定期的举办运动会。…

软件设计师常考知识点

絮絮叨叨&#xff1a;哈喽大家好&#xff5e;这里是一口八宝周[送花花]。前段时间闲来无事报考了今年的软件设计师考试&#xff0c;觉得凭借自己“自律”的学习&#xff0c;一定可以把书看完&#xff0c;把题刷完顺利上岸&#x1f60e;。 书确实没看完&#xff0c;但是视频学完…