Vue之创建组件及新发现

首先让我们来认识一下什么是组件,以及组件的作用。
组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件。
组件化和模块化的不同
组件化:是从UI界面的角度进行划分的
模块化,是从代码逻辑的角度进行划分的。
组件可以分为全局组件和私有组件。
下面我们来试着了解一下全局组件

全局组件

我们来尝试创建一个全局组件

第一种方法

	//1.首先,我们使用Vue.extend来创建全局Vue组件
	var com1=Vue.extend({
	template:'<h3>这是我们创建的全局Vue组件</h3>'
	//2.使用component(‘组件名称’,创建出的组件模板对象)
	Vue.component('mycom',com1)
	})
	//创建Vue.实例
	var vm=new Vue({
		el:"#app,
		data:{},
		methods:{}
	})

然后再把创建好的组件扔到页面中

	<div id="app>
		<mycom></mycom>
	</div>

效果如下图所示
在这里插入图片描述

第二种方法

第二种方法我们可以把上面的两步合并成一部

	Vue.component('mycom2',Vue.extend({
		template:"<h3>这是创建的全局组件</h3>"
	}))

把mycom2丢进页面中

	<div id="app>
		<mycom></mycom>
	</div>

效果如下
在这里插入图片描述
我们还可以继续简化,省去extend

     Vue.component('mycom1',{
     	template:"<h3>这是创建的全局组件</h3>"
     	})

效果不变

第三种方法
用id方法把template外抛出去

   Vue.component('mycom1',{
            template:'#temp'
        })

然后再js外面用template标签接收,同时,不要忘记把创建的组件名称扔到实例中

	<div id="app">
        <mycom1></mycom1>
    </div>
    <template id="temp">
        <h3>这里的template是外抛出去的</h3>
    </template>

效果如下所示
在这里插入图片描述

新发现
在这里我发现,js外接收时若不用template,而改用其他任何标签,也可以达到同样的效果,并且这样做就不需要再往实例中添加组件名称。

	<div id="app">
	</div>
	<p id="temp">
		<h3>这是没用template标签接收</h3>
	</p>
	

效果如下所示
在这里插入图片描述
效果看上去还行,在body里的结构也没有出现问题,可是这样子的话
我发现我们创建组件时的组件名称不就是没用上吗?
在这里插入图片描述
那我们把这个也抛弃了吧
在这里插入图片描述
效果还是没变,照样能打到想要的效果,我们没通过标签名调用组件,而是通过id来调用
在这里插入图片描述
看起来很方便,这是我自己偶然发现的,若什么遗漏之处和不妥的地方,希望大家能够指出问题。

私有组件

我们来创建一个私有组件

        var vm=new Vue({
            el:"#app",
            data:{},
            methods:{},
            components:{
                login:{
                    template:"<h1>这是一个私有组件</h1>"
                }
            }
        })
        var vm2=new Vue({
            el:"#app2",
            data:{},
            methods:{}
        })

把组件加入页面中

 	<div id="app">
        <login></login>
    </div>
    <div id="app2">
        <login></login>
    </div>

效果如下
在这里插入图片描述
这里我们是在vm实例中创建的,vm2没有创建,所以尽管在app2中也加入了组件名称,可以看到并没有效果。同时,还报出了错误。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值