欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Vue3组件化

程序员文章站 2022-07-13 22:45:52
...

Component组件是可复用的Vue实例,且带有一个名字,可以把组件作为自定义元素来使用

可以将项目中重复出现的页面结构定义为Vuew的组件实例,或将特殊功能封装成组件:
组件分为:
全局组件和局部组件

全局组件,在所有Vue实例中都可以使用
通过应用程序实例app的component()方法来定义
语法:app.component(组件名,选项对象)

1、全局组件:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="./js/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<!-- 组件名就是条用组件的标签名 -->
			<!-- 第三步 组件之间多次条用,互相独立-->
			<my-hello></my-hello>
		</div>
		<!-- 第二步 -->
		<template id="content">
			<div>
				<h3>自定义全局组件</h3>
				<p>name:{{name}}</p>
			</div>
		</template>
		<script>
			const app=Vue.createApp({
				data(){
					return{
						msg:'welcome'
					}
				}
			})
			// 第一步,可以多次调用my-hello,组件进行复用
			// app.component('my-hello',{//第一种
				app.component('MyHello',{//第二种//采用首字母大写,帕斯卡命名法
				//组件的具体定义,组件名建议用短横线连接,全小写
				template:'#content',
				//组件的数据仓库
				data(){
					return{
						name:'tom'
					}
				}
				
			})
			
			//这里的vm本身也是一个组件,称为Root根组件
			const vm=app.mount("#app");
			console.log(app)//应用程序实例
			console.log(vm)//Vue实例
		</script>
	</body>
</html>

 2、局部组件

局部组件,只能再构建组件的Vue实例的容器范围内使用

依赖于某个Vue实例,通过选项components:{}来定义

语法:
Vue.createApp({
    components:{
        'component-a':选项对象,
        'component-b':选项对象
    }
})

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="./js/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<p>{{msg}}</p>
		</div>
		<template id="b">
			<div>
				<h3>组件a</h3>
				<comp-a></comp-a>
			</div>
			
		</template>
		<template id="a">
			<div>
				<h3>组件a</h3>
				<p>{{ msg }}</p>
			</div>
			<comp-b></comp-b>
		</template>
		<script>
			Vue.createApp({
				component:{//局部组件
				'comp-a':{//父组件
					template:'#a',
					data(){
						return{
							msg:'hellow'
						}
					},
					component:{//局部组件
						'comp-b':{//子组件,comp-b只能再comp-a中调用
							template:'#b',
							data(){
								return{
									msg:"bbb"
								}
							}
						}
					}
				}
			 }
			}).mount('#app')
		</script>
	</body>
</html>

相关标签: 【VUE.js】