Vue 允许您将组件定义为工厂函数,
异步解析您的组件定义。
由于import() 返回一个promise,因此您可以使用以下方法注册您的异步组件:
export default {
components: {
'Alfa': () => import('@/components/Alfa'),
'Bravo': () => import('@/components/Bravo'),
'Charlie': () => import('@/components/Charlie')
}
}
Vue 只会在组件需要的时候触发工厂函数
被渲染并将缓存结果以供将来重新渲染。
所以你的组件只有在需要渲染时才会被加载。
你可以使用动态组件来渲染它:
<component :is='page'/>
和
export default {
computed: {
page () {
return 'Alfa'
}
}
}
如果您已经使用vue-router,您可以直接在路由定义中使用它。在文档here 中查看更多信息。
const router = new VueRouter({
routes: [{
path: '/alfa',
component: () => import('@/components/Alfa')
}, {
path: '/bravo',
component: () => import('@/components/Bravo')
}, {
path: '/charlie',
component: () => import('@/components/Charlie')
}]
})
正如您所见,这是动态导入但静态注册(您必须提供组件的路径。)这主要适用于许多情况。但是如果你想使用动态注册,你可以直接返回组件而不是名称参见文档here。
export default {
computed: {
page () {
return () => import('@/components/Alfa')
}
}
}