首页 > 其他分享 >VUE组件

VUE组件

时间:2022-12-17 21:47:28浏览次数:41  
标签:el VUE vue app Vue 组件 data

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>

测试结果:

在这里插入图片描述

标签:el,VUE,vue,app,Vue,组件,data
From: https://www.cnblogs.com/daimenglaoshi/p/16989569.html

相关文章

  • VUE组件
    9.Vue组件组件(Component)是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用......
  • Vue 中实现全局引入 scss 变量
    导读最终实现的效果是:在vue文件的style标签中以及其它scss文件中都可以直接使用全局配置的scss变量,不需要再导入对应的scss文件。目录结构src│App.vue│......
  • Vue的浏览器中的 webStorage
    Vue的浏览器中的 webStorage1:Api介绍/*webStorage存储内容大小一般支持5MB左右(不同浏览器可能还不一样)浏览器端通过Window.sessionStorage和Window.localStorage属性......
  • Vue 中的 Todo-list 案例
    Vue中的 Todo-list案例1:示例​​​​总结TodoList案例组件化编码流程:(1).拆分静态组件:组件要按照功能点拆分,命名不要与html元素冲突。(2).实现动态组件:考虑好数据的存......
  • Vue项目入门
    1安装VueMac版本安装:https://zhuanlan.zhihu.com/p/435312919Window版本安装:https://blog.csdn.net/weixin_43896253/article/details/116143031开发软件安装:VisualSt......
  • vue-template-admin 模板
    1.替换登录页的样式       ......
  • Transformers 库pipeline组件
    目录pipeline组件基本用法pipeline组件基本用法Transformers库将目前的NLP任务归纳为以下几类:文本分类:例如情感分析、句子对关系判断等;对文本中的词语进行分类:例如词......
  • vue3项目,记录我是如何用1h实现产品预估1天工作量的界面需求
    最近在编写前端界面,硬是一人一周时间加班加点写完了一个项目的前端界面(一级菜单有12个页面+一个控制台大屏,二三级界面有N个),之前预估前端界面的编写需要一个月,我是自己......
  • vue 插件
    1正则插件any-rule 使用在页面中按F1就可以了 选择之后 ......
  • vue2 路由24 声明式导航 编程式导航 路由守卫
    用户点击了页面的路由链接,会导致hash值发生变化,路由监听到hash值的链接发生的变化,会把对应的组件渲染到当前的页面中   安装:直接安装router的话会安装最新版的,最新......