Search
异步组件 只有在渲染时才会加载,有效减少首屏包体积。 使用 defineAsyncComponent 包装动态 import。
defineAsyncComponent
import { defineAsyncComponent } from 'vue' const AsyncView = defineAsyncComponent({ // 加载函数 loader: () => import('./View.vue'), // 加载中组件 loadingComponent: Loader, // 错误组件 errorComponent: ErrorView, // 展示 loadingComponent 前的延迟 (默认 200ms) delay: 200, // 超时时间 timeout: 10000, // 错误处理,支持重试 onError(err, retry, fail, attempts) { if (attempts < 3) retry() else fail() } })
最常用的场景是路由配置。
const routes = [ { path: '/about', component: () => import('./About.vue') // Webpack/Vite 自动代码分割 } ]
在 Vue 3 中,<Suspense> 组件可以处理异步组件的加载状态,提供了一种声明式的 Loading 处理方式。
<Suspense>
delay