Vue.js中的内置组件component

组件 (Component) 是 Vue.js 最强大的功能之一,组件可以扩展 HTML 元素,封装可重用的代码。

语法:Vue.component('组件名称', { })

第1个参数是标签名称,第2个参数是一个选项对象

有一个特殊属性is ,用来决定哪个组件被渲染。


动态组件模板template

在创建组件时,需要把HTML结构放在组件模板(template)中;

组件模板内必须是单个根元素

组件模板的内容可以是模板字符串 ;

例:设置一个搜索组件模板

            template: `
					<div>
						<input type="text" v-model="kw" id="inp">
						<button>搜索</button>
					</div>
				`

keep-alive内置组件

  keep-alive 是 Vue 的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。

include   =>  指定要缓存的组件名称
exclude  =>  指定不要缓存的组件名称
max       =>  最大缓存数量(原理:使用队列的数据结构)

下面我们通过写一个搜索案例来应用一下。

<body>
		<div id="app">
			
			<div>
				<button @click="com = 'comA'">comA</button>
				<button @click="com = 'comB'">comB</button>
				<button @click="com = 'comC'">comC</button>
			</div>
			
			<!-- 动态组件 -->
			<keep-alive  max="2">
				<component :is="com"></component>
			</keep-alive>
			
		</div>
		<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			
			//自定义组件
			Vue.component('comA', {
				template: `
					<div>comA 组件</div>
				`,
				beforeCreate(){
					console.log('comA...beforeCreate...')
				},
				created() {
					console.log('comA...created...')
				},
				beforeMount() {
					console.log('comA...beforeMount...')
				},
				mounted() {
					console.log('comA...mounted...')
				}
			})
			
			Vue.component('comB', {
				template: `
					<div>comB 组件</div>
				`,
				beforeCreate(){
					console.log('comB...beforeCreate...')
				},
				created() {
					console.log('comB...created...')
				},
				beforeMount() {
					console.log('comB...beforeMount...')
				},
				mounted() {
					console.log('comB...mounted...')
				}
			})
			
			Vue.component('comC', {
				template: `
					<div>comC 组件</div>
				`,
				beforeCreate(){
					console.log('comC...beforeCreate...')
				},
				created() {
					console.log('comC...created...')
				},
				beforeMount() {
					console.log('comC...beforeMount...')
				},
				mounted() {
					console.log('comC...mounted...')
				}
			})
			
			new Vue({
				el: '#app',
				data:{
					com: 'comA'
				}
			})
		</script>
	</body>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值