defineAsyncComponent — explicit async loading. lazy — route-level code splitting.
defineAsyncComponent:
1import { defineAsyncComponent } from "vue"23const AsyncComponent = defineAsyncComponent({4 loader: () => import("./HeavyComponent.vue"),5 loadingComponent: LoadingSpinner,6 errorComponent: ErrorDisplay,7 delay: 200,8 timeout: 30009})
Route lazy loading:
1// router/index.ts2const routes = [3 {4 path: "/dashboard",5 component: () => import("./views/Dashboard.vue")6 }7]
Key differences: