关于vue项目中components和template的理解
关于vue项目中components: { App }, template: '<App/>'的理解原代码:效果:根据名字猜想new Vue({el: '#app',router: router,components: { App },template: '<App/>'});代码块中components: { App },...
·
关于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 的缩写
即这个变量名同时是:
用在模板中的自定义元素的名称
包含了这个组件选项的变量名
更多推荐
已为社区贡献1条内容
所有评论(0)