Vue 3.0x中的Suspense和defineAsyncComponent

Suspense

Vue3中的Suspense是Vue3中新增的一个组件,它的作用是实现延迟加载和错误处理。在组件中加入Suspense,可以让异步组件可以渲染出加载状态,并且如果异步组件加载时出现错误,也能够处理这些错误。

Suspense可以让我们在异步组件加载的同时展示一个占位符,使用户获得更好的加载体验。

defineAsyncComponent

在使用vue-cli构建项目,在默认情况下,执行 npm run build/yarn build会将所有的js打包成一个整体,vue为单页面应用,同步加载大量的页面代码会导致页面长时间处于空白情况。 使用该方法来异步加载所需页面来提升加载速度。 此适用于项目比较大的情况下,如果就只有几个页面的情况,不建议使用该功能 

通过实际的应用场景,例如延迟加载大型组件、优化用户体验等,展示Suspense和异步组件如何在真实项目中发挥作用。

<template>
  <div class="app">
    <Suspense>
      <template #default>
        <AsyncComponent />
      </template>
      <template #fallback>
        <LoadingSpinner />
      </template>
    </Suspense>
  </div>
</template>
<script>
import { defineAsyncComponent, Suspense } from 'vue';
// 异步加载的组件
const AsyncComponent = defineAsyncComponent(() =>
  import('./components/AsyncComponent.vue')
);
// 加载中的占位符组件
const LoadingSpinner = defineAsyncComponent(() =>
  import('./components/LoadingSpinner.vue')
);
export default {
  components: {
    AsyncComponent,
    LoadingSpinner
  }
};
</script>

我们有两个异步加载的组件:AsyncComponent 和 LoadingSpinner。我们使用 defineAsyncComponent 来定义这些异步组件。然后,我们在父组件中使用 Suspense 组件,将默认内容包裹在 template #default 中,将加载中状态包裹在 template #fallback 中。

当 AsyncComponent 正在加载时,Suspense 组件会显示 LoadingSpinner 组件,直到异步组件加载完成并准备就绪,然后再显示 AsyncComponent 的内容。

在这种场景下,Suspense 可以帮助我们实现更好的加载体验。读者在等待异步组件加载时,可以看到明确的加载状态,而不是一片空白。这有助于减少用户的不确定性,提升用户体验。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值