Vue—组件

9 篇文章 0 订阅


前言

Vue在设计之初借鉴了React框架的组件化编程,将复杂的界面功能封装成一个个的组件,可以大幅提高代码复用率,简化项目编码,提高运行效率。本文简要介绍组件的基本使用。


一、概念

模块和组件

  • 模块。在之前的网页编程中,我们常常将页面某些具体功能的交互部分单独抽离出来,组成一个个.js文件,再将其引入使用,使得编程细化为一个个的模块,构建一个模块化的应用。
  • 而Vue的组件,则是将页面的某些具体功能,包含这个功能的结构html、样式css、交互js,全都单独封装成一个以.vue为后缀的文件,这个文件就是一个组件。最后再由多个组件构成完整的页面。
    组件示意图
    组件化编程可以大幅提高代码复用率,使得页面结构更加清晰,简化项目编码,提高运行效率。

组件类型分为两类:

  • 单文件组件 :一个文件中只有一个组件
  • 非单文件组件:一个文件中包含多个组件。缺点: 模板编写没有提示。没有构建过程,无法将ES6转换成ES5。不支持组件的CSS

实际开发中我们常用 单文件组件 来完成页面构建。

单文件组件.vue

一个功能组件包含了这个功能所具备的结构,样式和交互三大部分,使用标签作为分割。
开发中常用单文件组件,但需要和vue脚手架配合使用。

  • < template >页面结构< /template >
  • < scripte >交互< /script >
  • < style >样式< /style >

一个简单的.vue文件示例:

<template>
	<div class="demo">
		<h2>学校名称:{{name}}</h2>
		<h2>学校地址:{{address}}</h2>
		<button @click="showName">点我提示学校名</button>	
	</div>
</template>

<script>
//const student = Vue.extend({  //组件未暴露,无法引用。
	 export default {          //暴露组件 便于引用
		name:'School',        //组件命名最好与此文件名相同
		data(){
			return {
				name:'光明小学',
				address:'北京'
			}
		},
		methods: {
			showName(){
				alert(this.name)
			}
		},
	}
</script>

<style>
	.demo{
		background-color: orange;
	}
</style>

二、组件的基本使用

组件的使用有三大步骤:创建——注册——编写标签

1、创建组件

注意

  • 组件配置项中没有el 这个配置项 el:‘#root’
  • data配置项需写成函数形式 data(){…} 。

除了以上两点,组件中的方法和属性基本与vm中的相同。

  • template配置项中可以配置组件结构。
//1、构造一个名为student的组件
const student = Vue.extend({
		    //组件配置相中没有 el 这个配置项
			template:`
				<div>
					<h2>学生姓名:{{studentName}}</h2>
					<h2>学生年龄:{{age}}</h2>
				</div>
			`,
			data(){    //data配置项需用函数形式
				return {
					studentName:'张三',
					age:18
				}
			}
		})

2、注册组件

局部注册

通过components配置项完成局部注册。

//创建vm
		new Vue({
			el:'#root',
			data:{
				msg:'你好啊!'
			},
			//第二步:注册组件(局部注册)
			components:{
				student
			}
		})

全局注册

通过vue.component() 完成全局注册。

//全局注册组件
Vue.component('student',student)

3、编写组件标签

组件准备完毕就可以在结构中使用了。将 组件标签写到结构的对应位置即可。

组件标签的两种写法:

  • <组件名></组件名>
  • <组件名/> 需要在脚手架中使用,否则会导致后续组件不能渲染
<!-- 准备好一个容器-->
		<div id="root">
			<!-- 第三步:编写组件标签 -->
			<student></student>
		</div>

组件嵌套

由上述内容可知,组件中的方法和属性除了个别项外基本与vm中的相同,那么同样的,组件中也有components 这个配置项。
例:现在需要将学生组件嵌套进学校组件中。
只需在学校组件的components 配置中注册学生组件,就可以完成一个简单的组件嵌套。

	//定义student组件
		const student = Vue.extend({
			name:'student',
			template:`
				<div>
					<h2>学生姓名:{{name}}</h2>	
					<h2>学生年龄:{{age}}</h2>	
				</div>
			`,
			data(){
				return {
					name:'小明',
					age:18
				}
			}
		})
		
		//定义school组件
		const school = Vue.extend({
			name:'school',
			template:`
				<div>
					<h2>学校名称:{{name}}</h2>	
					<h2>学校地址:{{address}}</h2>	
					<student></student>
				</div>
			`,
			data(){
				return {
					name:'光明小学',
					address:'北京'
				}
			},
			//注册组件(局部)
			components:{
				student    //在学校组件中定义学生组件,完成组件嵌套。
			}
		})

总结

  • 开发中常用单文件组件
  • 组件使用的三大步骤:
    1、创建组件 。
    2、注册组件。
    3、编写组件标签。
  • 组件没有el配置项;组件data必须写成函数式。此外所有属性及方法与Vue相同。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值