在 Vue 3 中,处理懒加载的方式与 Vue 2 中有所不同。Vue 3 推荐使用 Suspense 和 defineAsyncComponent 来实现组件的懒加载。
Suspense 组件是 Vue 3 中新增的组件,用于处理异步组件的加载状态。我们可以在 Suspense 中使用 fallback 属性指定一个加载中的占位符,直到异步组件加载完成后再显示真正的内容。
defineAsyncComponent 是 Vue 3 中定义异步组件的新方法。它返回一个 Promise 对象,该 Promise 对象在组件被请求之前解析为一个组件选项对象,从而实现异步组件的加载。
下面是一个使用 Suspense 和 defineAsyncComponent 实现组件懒加载的示例:
Copy Code<template> <div> <h1>Lazy Component Demo</h1> <Suspense> <template #default> <AsyncComponent /> </template> <template #fallback> <p>Loading...</p> </template> </Suspense> </div> </template> <script> import { defineAsyncComponent } from 'vue'; const AsyncComponent = defineAsyncComponent({ loader: () => import('./AsyncComponent.vue'), delay: 200, //延迟时间 timeout: 3000, //超时时间 errorComponent: () => 'Oops, something went wrong!', loadingComponent: () => 'Loading component...', }); export default { components: { AsyncComponent, }, }; </script>