首页 > 其他分享 >异步组件与suspense

异步组件与suspense

时间:2024-08-20 11:15:19浏览次数:10  
标签:异步 vue defineAsyncComponent suspense 组件 import 加载

异步组件:通过延迟加载组件,只有在需要时才会加载它们。

异步组件在大型应用程序中非常有用,因为它们可以减少初始加载时间,并按需加载部分代码。

异步组件的常见使用场景

  1. 路由懒加载:在大型单页应用中,将路由对应的组件设置为异步组件,以减少初始加载时间。
  2. 按需加载:当页面中某些组件只有在用户触发特定操作时才需要加载时,可以使用异步组件。
<script setup lang="ts">
import { defineAsyncComponent } from 'vue';

// 定义异步组件,并配置加载、错误、延迟和超时
const AsyncComponent = defineAsyncComponent({
  loader: () => import('./components/MyComponent.vue'),
  loadingComponent: () => import('./components/Loading.vue'),
  errorComponent: () => import('./components/Error.vue'),
  delay: 200, // 延迟200毫秒后显示加载组件
  timeout: 3000, // 超时时间为3秒,超时后显示错误组件
  retryWhenFail: true // 组件加载失败时,是否重新尝试加载
});
</script>

<template>
  <div>
    <h1>Vue 3 异步组件示例</h1>
    <AsyncComponent />
  </div>
</template>

 

Suspense组件是一个非常有用的工具,专门用于处理异步组件的加载和状态管理。

Suspense会等待所有子组件(如 AsyncComponentAAsyncComponentB)加载完成后才会渲染 #default 插槽的内容。

在此期间,#fallback 插槽的内容(例如加载动画)会显示。

<template>
  <div>
    <h1>等待多个异步组件</h1>
    <Suspense>
      <template #default>
        <AsyncComponentA />
        <AsyncComponentB />
      </template>

      <template #fallback>
        <div>加载中...</div>
      </template>
    </Suspense>
  </div>
</template>

<script setup lang="ts">
import { defineAsyncComponent } from 'vue';

// 定义多个异步组件
const AsyncComponentA = defineAsyncComponent(() => import('./components/ComponentA.vue'));
const AsyncComponentB = defineAsyncComponent(() => import('./components/ComponentB.vue'));
</script>

 

标签:异步,vue,defineAsyncComponent,suspense,组件,import,加载
From: https://www.cnblogs.com/ssszjh/p/18369108

相关文章

  • 【第67课】Java安全&JNDI&RMI&LDAP&五大不安全组件&RCE执行&不出网
    免责声明本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。文中所涉......
  • Vue 3 组件渲染“暂停”技巧
    目录为什么需要“暂停”渲染?实现思路示例实现1.创建组件2.解释实现优化建议更深入的渲染控制1.异步组件2.使用Suspense3.废弃管理性能优化技巧1.虚拟滚动2.使用watchEffect3.事件处理实际应用场景        在使用Vue3开发复杂应用时,有时我们......
  • 在K8S中,Kubernetes的组件有哪些?
    Kubernetes(K8s)是一个复杂的系统,由多个核心组件组成,这些组件协同工作来实现容器化应用的部署、扩展和管理。下面是Kubernetes的主要组件及其功能:1.控制平面组件控制平面负责管理集群的状态,包括调度、部署和维护集群中运行的容器化应用。控制平面组件通常运行在一个或多个控制节......
  • 分布式系列之限流组件
    概述在高并发场景下,请求量瞬间到达,后端服务器即使有缓存、集群主备、分库分表、容错降级等措施,也有可能扛不住这请求量,因此可考虑引入限流组件。限流的目的:防止恶意请求流量或流量超出系统承载。应用场景:网关层校验流量,拦截非法请求,或直接抛弃部分流量(后来的流量,如秒杀系统)实......
  • C# 异步方法
    概念:异步方法是使用async和await关键字创建的,其中async关键字用于声明异步方法,而await关键字用于等待异步操作完成。它们允许你编写非阻塞代码,即代码在等待异步操作完成时不会阻塞调用线程。这种编程模型(异步编程模型)通常用于提高应用程序的响应能力,异步编程是一种编程范式,C#......
  • 卧槽,牛逼!vue3的组件竟然还能“暂停”渲染!
    前言有的时候我们想要从服务端拿到数据后再去渲染一个组件,为了实现这个效果我们目前有几种实现方式:将数据请求放到父组件去做,并且使用v-if控制拿到子组件后才去渲染子组件,然后将数据从父组件通过props传给子组件。在子组件的onMounted中请求数据,并且使用v-if在子组件的temp......
  • 029、Vue3+TypeScript基础,路由组件和一般组件的存放位置,以及页面生命周期
    01、main.js代码如下://引入createApp用于创建Vue实例import{createApp}from'vue'//引入App.vue根组件importAppfrom'./App.vue'//引入路由importrouterfrom'./router'constapp=createApp(App);//使用路由app.use(router);//App.vue的根元素id为ap......
  • Java 使用 CompletableFuture 简化异步调用
    使用CompletableFuture可以大大简化处理多线程之间的异步调用关系,如串行依赖、并行、聚合等等。CompletableFuture是对Future接口的扩展和增强,进行了丰富的接口方法扩展,完美的弥补了Future的不足。本篇博客通过代码的方式,展示CompletableFuture的常用方法,体验其强大灵......
  • 【项目】多设计模式下的同步&&异步日志系统(二)
    继上文对日志系统的介绍,并且实现了日志等级、日志消息的定义、以及格式化消息等。由这三个模块就能完整的输出一条消息。但是考虑到日志消息不可能全部都通过显示器展示。本项目针对落地方式,也进行多种编写,以供使用。消息落地类(简单工厂模式)消息落地的方式标准输出文件按......
  • 【项目】多设计模式下的同步&&异步日志系统(三)
    继前俩次完成了日志系统的等级类、消息结构以及格式化消息,并且将格式化的数据实现落地。落地存在同步和异步的落地方式。同步:本线程生成消息,并且进行IO写。异步:线程生成消息,交给子线程写。为此实现了双缓冲区用来减少异步带来的频繁申请锁释放锁减低效率。本文继续实现异步......