-
概念
- 在大型项目中,我们可能需要拆分应用为更小的块,并仅在需要时再从服务器加载相关组件。Vue 提供了 defineAsyncComponent 方法来实现此功能:
-
使用
- 父组件
<template><div><asyncSon></asyncSon></div> </template><script setup lang="ts"> import { ref, defineAsyncComponent } from "vue"; const asyncSon = defineAsyncComponent({// 加载函数loader: () => import('./son.vue'),// 加载异步组件时使用的组件loadingComponent: () => import('./son1.vue'),// 展示加载组件前的延迟时间,默认为 200msdelay: 20000,// 加载失败后展示的组件errorComponent: () => import('./son2.vue'),// 如果提供了一个 timeout 时间限制,并超时了// 也会显示这里配置的报错组件,默认值是:Infinitytimeout: 3000 }) </script> <style scoped></style>
- 子组件1
<template><div><h1>todo12</h1></div> </template> <script setup lang="ts"> </script> <style scoped> </style>
- 子组件2
<template><div><h1>son1</h1></div> </template><script setup lang="ts"></script><style scoped></style>
- 子组件3
<template><div><h1>son2</h1></div> </template><script setup lang="ts"></script><style scoped></style>
- 效果图
- 父组件