vue中组件的使用

定义Vue组件
什么是组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可;
组件化和模块化的不同:

  • 模块化: 是从代码逻辑的角度进行划分的;方便代码分层开发,保证每个功能模块的职能单一;
  • 组件化: 是从UI界面的角度进行划分的;前端的组件化,方便UI组件的重用;
  • 全局组件定义的三种方式

  1. 使用 Vue.extend 配合 Vue.component 方法:
var login = Vue.extend({
      template: '<h1>登录</h1>'
    });
    Vue.component('login', login);
  1. 直接使用 Vue.component 方法:
Vue.component('register', {
      template: '<h1>注册</h1>'
    });
  1. 将模板字符串,定义到script标签种:
<templateid="tmpl" type="x-template">
      <div><a href="#">登录</a> | <a href="#">注册</a></div>
    </template>

同时,需要使用 Vue.component 来定义组件:

Vue.component('account', {
      template: '#tmpl'
    });
```注意: 组件中的DOM结构,有且只能有唯一的根元素(Root Element)来进行包裹!
**定义一个私有的组件**
使用vue实例的属性components在内部定义一个私有组件
components:{  //定义一个实例内部的私有组件
					login:{
						template:'<h1>这是一个私有的组件</h1>'
					}
				}
或者使用
<template id="teml1">
			<h1>我是私有的组件</h1>
		</template>
		components:{  //定义一个实例内部的私有组件
					login:{
						template:'#teml1'
					}
				}
**组件之间的切换**
*方式一:*
使用<v-if>和<v-else>  使用一个标识符来进行识别
例:<a href="" @click.prevent="flag=true">登录</a>
			<a href="" @click.prevent="flag=false">注册</a>
			<login v-if="flag"></login>
			<register v-else="flag"></register>
*方式二*
<a href="" @click.prevent="com='login'">登录</a>
			<a href="" @click.prevent="com='register'">注册</a>
			<!--vue使用了component,来展示对应名称的组件,一旦使用:绑定就会去找data中的变量-->
			<component :is="com"></component>
			Vue.component('login',{
			template:'<h1>登录组件</h1>'
		})
		Vue.component('register',{
			template:'<h1>注册组件</h1>'
		})
**注意**
在组件中可以有自己data数据,组件的data和实例的data不一样,实例中的data可以为一个对象,但是组件中的data必须是一个方法,这个方法必须返回一个对象。
原因:组件之间不能公用一个对象,每次调用组件调用data时在内部开辟一个新的对象来避免组件之间的对象公用
*使用案例*
Vue.component('mycoml',{
				template:'<h1>这是一个全局组件{{msg}}</h1>',
				data:function(){
					return {
						msg:'这是组件中的定义的数据'
					};
				}
			})
**组件和动画之间的切换**
<!--vue使用了component,来展示对应名称的组件,一旦使用:绑定就会去找data中的变量-->
			<transition mode="out-in">
				<component :is="com"></component>
			</transition>
	使用transition 标签将component 包裹起来就可以实现动画效果,使用mode属性设置为“out-in”可以变美,再上一个元素出之后后一个元素进入
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值