当前位置: 首页 > article >正文

Vue3组件异步懒加载defineAsyncComponent

前言:我是一个刚毕业不久的大专毕业生,学Vue3和使用Vue3也有一段时间了,但是对于一些Vue3的API还没有完全的都使用上。今天业务上遇到一个问题,一个vue页面文件中,import了许多其他页面的组件,差不多了50多行的import。于是我在Vue官网闲逛时,发现了defineAsyncComponent API,正好就是我需要的!!!

认识

Vue官方对这个组件的解释是:定义一个异步组件,它在运行时是懒加载的。参数可以是一个异步加载函数,或是对加载行为进行更具体定制的一个选项对象。

在我的一顿努力搜寻下,最终我明白了这个API的用法。

功能:用法和组件懒加载类似!!

演示

下面我通过一个简单的案例来说明这个组价的用法:

<template>
    <div class="EChart_Group">
      <el-row gutter="10">
        <el-col :xs="24" :sm="24" :md="24" :lg="15">
          <el-card>
            <div class="tit">访问量</div>
            <div class="line">
              <component :is="chartComponent('line')" />
            </div>
          </el-card>
        </el-col>
        <el-col :xs="24" :sm="24" :md="24" :lg="9">
          <el-card>
            <div class="tit">前端结业率</div>
            <div class="pie">
              <component :is="chartComponent('pie')" />
            </div>
          </el-card>
        </el-col>
      </el-row>
    </div>
</template>

<script setup>
const chartComponent = (val) => {
  return defineAsyncComponent(() => import(`./components/${val}.vue`))
}
</script>

在./components下正好有 line.vue 和 pie.vue。

如果使用他来解决成千上万个import,是相当好的优化:

  • 不阻塞线程,页面加载更快。
  • 按需加载,减少import的使用

完整配置

const AsyncComp = defineAsyncComponent({
  // 加载函数
  loader: () => import('./Foo.vue'),

  // 加载异步组件时使用的组件
  loadingComponent: LoadingComponent,
  // 展示加载组件前的延迟时间,默认为 200ms
  delay: 200,

  // 加载失败后展示的组件
  errorComponent: ErrorComponent,
  // 如果提供了一个 timeout 时间限制,并超时了
  // 也会显示这里配置的报错组件,默认值是:Infinity
  timeout: 3000
})


http://www.kler.cn/a/415148.html

相关文章:

  • 处理流—BufferReader和BufferWrite
  • GPT视角下,如何在密码学研究中找到属于你的方向?
  • 天锐绿盾加密软件与Ping32联合打造企业级安全保护系统,确保敏感数据防泄密与加密管理
  • java-分而治之算法
  • 【CSS】一篇掌握CSS
  • 封装类与封装函数
  • 选择使用whisper.cpp进行语音转文字
  • SpringBoot连接测试InfluxDB时序数据库
  • 学习ASP.NET Core的身份认证(基于Session的身份认证1)
  • 使用命令行创建一个简单的 Maven Web 应用程序
  • MindAgent部署(进行中.....)
  • 23种设计模式-工厂方法(Factory Method)设计模式
  • sqli_labs-10,11,12 --详细解析
  • 叮!您的RK3568系统镜像备份方法请查收
  • 可视化建模以及UML期末复习篇----相关软件安装
  • web博客系统的自动化测试
  • MEASURING INTANGIBLE CAPITAL WITH MARKET PRICES论文阅读
  • MySQL面试攻略:从基础到高级,全面解析
  • 【微服务】Nacos配置管理
  • docker-mysql
  • 分布式光伏与储能协调控制策略的应用分析
  • 简单线性DP
  • 通过docker overlay2 目录名查找容器名和容器ID
  • 架构第十一章:zabbix
  • Vue 3 KeepAlive 教程
  • Unity3d C# 实现一个基于UGUI的自适应尺寸图片查看器(含源码)