关于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 的缩写
即这个变量名同时是:
用在模板中的自定义元素的名称
包含了这个组件选项的变量名
Logo

前往低代码交流专区

更多推荐