递归组件
组件在它的模板中可以递归地调用自己,但是需要给组件设置 name 的选项。同时要注意限制递归的数量,否则会抛出错误:max stack size exceeded
内联模板
Vue 提供一个内联模板的功能,使用组件时,给组件标签使用 inline-template 特性,组件就会把它的内容当成模板,而不是把它当内容分发。此时,子组件和父组件的数据都可以在内容中,更加灵活,但同时数据的作用域也是会令人费解。
<child-component inline-template>
<p>{{ parentData }}</p>
<p>{{ childrenData }}</p>
</child-component>
动态组件
Vue.js 提供了一个特殊的元素 <component> 用来动态的挂载不同的组件,使用 is 特性来选择要挂载的组件
<component :is="componentName"></component>
components:{
componentA,
componentB,
componentC
}
data(): {
return {
componentName: 'componentA'
}
}
异步组件
- Vue.js 允许将组件定义为一个工厂函数,这样我们就可以动态地解析组件。Vue.js只需要在组件需要渲染时触发工厂函数,并且把结果缓存起来,用于后面的再次渲染。
- 使用 webpack 和 .vue 单文件的用法,可以更优雅地实现异步组件(路由)