关于vue项目中components和template的理解

关于vue项目中 components: { App }, template: '<App/>'的理解

原代码:
原文件
效果:
在这里插入图片描述
根据名字猜想

new Vue({
  el: '#app',
  router: router,
  components: { App },
  template: '<App/>'
});

代码块中

components: { App },
template: '<App/>'

的作用为引入组件和使用组件,在相继注释这两行代码后都出现了页面消失的情况

在加入自定义组件后准备测试猜想

注意需要有变量接收这个组件:
在这里插入图片描述
如下图,修改引入组件:
在这里插入图片描述
保存运行:
在这里插入图片描述

结论:

由此可知:

  • components: { App } 意思为引入组件,组件可以写在别的文件中,也可以写在本文件中,需要赋值给变量
  • template: ‘<App/>’ 意思为替换挂载的元素为引入的组件,具体为何或如何写成一个标签参考vue官方文档-组件基础

其他:

和在挂载的标签内直接引用<aaa></aaa>的方式使用组件不同,template: ‘<App/>’ 会将挂载的元素整个替换

  • <aaa></aaa>的方式使用组件:
    在这里插入图片描述
  • template: '<App/>'的方式使用组件
    在这里插入图片描述

注意

在官方文档中有说明,组件有全局和局部的注册之分,此处所用的是全局注册,若是局部注册,则应该写成

var aaa = {
	template: `<div>aaa</div>`
}

在components 中引入可以写成

components: {
	'aaa' : aaa
}
//也可以直接写
components: {
	aaa
}

这两者的区别在于,前者的属性名就是自定义元素的名字,如写成

components: {
	'sss' : aaa
}

则使用组件时,自定义元素标签应该改成<sss></sss>
而属性值就是标签所引用的组件对象

后者则默认将组件名作为自定义元素标签名

在 ES2015+ 中,在components中放一个组件的变量名 ComponentA(本例子中的aaa) 其实是 ComponentA: ComponentA 的缩写
即这个变量名同时是:
用在模板中的自定义元素的名称
包含了这个组件选项的变量名
  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值