【vue3】异步组件-骨架屏

news2024/11/19 13:28:19

使用异步组件,在打包的时候,会把异步组件额外打包,在使用的时候才加载。解决项目文件过大,加载白屏的时间过长,造成不好的用户体验。起到性能优化的作用。

在这里插入图片描述

一、父级使用:


<template>

    <div>
        <Suspense>
            <template #default>
                <SyncVue></SyncVue>
            </template>
            <template #fallback>
                <!-- fallback插槽-在加载的时候,显示的一个内容 -->
                <Skeleton></Skeleton>
            </template>
        </Suspense>
    </div>

</template>

<script setup lang='ts'>
    import { defineAsyncComponent } from 'vue'
    import Skeleton from '../components/Skeleton.vue'
    
    /**
     * 引入异步组件
     * 必须使用defineAsyncComponent
     * 要展示异步组件,必须使用v3新增的内置组件Suspense
     */
    const SyncVue = defineAsyncComponent(()=>import('../components/Sync.vue'))

    /**
     * defineAsyncComponent另外一种书写方式,偏复杂,不常用
     */
     const SyncVue = defineAsyncComponent({
        // 加载函数
        loader: ()=>import('../components/Sync.vue'),
        
        // 加载异步组件时使用的组件
        loadingComponent: ()=>import('../components/Sync.vue'),
        // 展示加载组件前的延迟时间,默认为 200ms
        delay: 200,

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

</script>
<style scoped lang='scss'>

</style>

二、内容子组件-异步组件

Sync.vue


<template>

    <div class="yyx-sync">
        <div class="yyx-sync__content">
            <div><img :src="resData?.url"></div>
            <div class="yyx-sync__pop">
                <div>{{ resData?.name }}</div>
                <div>&nbsp;{{ resData?.age }}</div>
            </div>
        </div>
        <hr>
        <div></div>
    </div>

</template>

<script setup lang='ts'>
    import { reactive } from 'vue'
    import request from '../utils/request'

    let resData = reactive<any>({})

    const getData = ()=>{
        return new Promise(async(resolve)=>{
            const {data} = await request({
                url:'./data.json',
                method:'get',
            })  
            setTimeout(() => {
                resolve(data.data)
                
            }, 2000);
        })
    }

    resData = await getData()
</script>

<style scoped lang='scss'>
    @include b(sync){
        @include e(content){
            display: flex;

        }
    }

</style>

三、骨架屏组件

Skeleton.vue


<template>

    <div class="sk">
        <div class="sk-2">
            <div></div>
            <div></div>
        </div>
        <hr>
        <div class="sk-3">这里是骨架屏的内容</div>
        <div class="sk-3">这里是骨架屏的内容</div>
    </div>

</template>

<script setup lang='ts'>
    // import { ref,reactive } from 'vue'

</script>
<style scoped lang='scss'>

</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1109587.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端开发各种loading效果【loading图的顺序对应代码顺序】

效果图 HTML <h1>Pure <b>SVG</b> Loader</h1><!-- Loader1 --><svg version"1.1" id"L1" xmlns"http://www.w3.org/2000/svg" xmlns:xlink"http://www.w3.org/1999/xlink" x"0px" y&quo…

canvas绘制扫描图

先定义一个canvas <div class"canFa"><canvas width"380" id"can3"></canvas></div>主要绘制函数 var chosHeight document.getElementsByClassName("canFa")[0].children[0].clientHeight;var chosWidth …

springBoot--web--静态资源规则

规则一&#xff1a; 访问&#xff1a;/webjars/** 路径就去 classpath:/META-INF/resources/webjars/下载资源 a.maven导入依赖 规则二&#xff1a; 访问&#xff1a;/** 路径就去 静态资源默认的四个位置找资源 a. classpath:/META-INF/resources/ b.classpath:/resourc…

mac虚拟机安装配置qt遇到的坑

本人的环境大致如下&#xff1a; VMware Workstation 16pro Mac镜像 macOS.Mojave10.14.6 &#xff08;后面在系统中升级到了 Sonoma 14.0&#xff09; Qt5.9.6 Xcode15.0 问题1&#xff1a; 环境都安装好后&#xff0c;qt创建工程一直只有.pro文件&#xff0c;看不到头文件和c…

互联网洗鞋店为什么如此火爆

互联网洗鞋店管理系统&#xff0c;干洗店洗衣洗鞋小程序&#xff0c;专门为干洗店、洗鞋店打造的高效、实用、有价值的洗鞋私域流量管理软件系统。 帮助洗鞋人打造自己的私域流量&#xff0c;实现会员用户管理&#xff0c;用户与商家点对点互联互通&#xff0c;提高洗鞋人经营管…

如何在ENVI中导入和定位SMAP的L3级土壤水分数据

如何在ENVI中导入和定位SMAP的L3级土壤水分数据 一、数据获取 二、ENVI中打开SMAP 三、建立地理查找表 然后打开GLT工具 修改输入输出的投影方式 设置输出路径&#xff0c;OK 四、配准

计算机中丢失VCRUNTIME140_1,总结vcruntime140_1.dll的五种修复方法

在使用计算机的过程中&#xff0c;我们可能会遇到各种各样的问题。其中&#xff0c;VCRuntime140_1.dll丢失是一个常见的问题。这个DLL文件是Microsoft Visual C 2015 Redistributable的一部分&#xff0c;它提供了许多重要的功能&#xff0c;包括一些运行时间库。当此DLL文件丢…

前端用F11打开伪装更新页面demo后,老板被欺骗多次!

前言 无意间看见朋友分享的页面看到了一个有趣的页面&#xff0c;通过F11之后给人以假乱真的感觉&#xff0c;这个代码并不难&#xff0c;我们一起来看看&#xff01; 正文 通过引入jQuery快速实现 一、js逻辑代码 function changeFullScreen() {const element document.doc…

优雅而高效的JavaScript——try...catch语句(js异常处理)

&#x1f601;博主&#xff1a;小猫娃来啦 &#x1f601;文章核心&#xff1a;优雅而高效的JavaScript——try…catch语句 文章核心 异常处理的重要性try...catch语句的基本语法和用法异常类型的分类和捕获内置异常类型自定义异常类型 try...catch的嵌套和多个块的应用finally子…

华为智选SF5,AITO问界的车怎么样

#华为智选 #赛力斯SF5 #aito问界m5 #aito问界m7 #华为汽车 华为的车&#xff0c;后杠焊两点&#xff0c;拉车的时候&#xff0c;拖车钩断了&#xff0c;后杠拉出来了&#xff0c;这质量可以吗&#xff1f;是否应该全部召回&#xff1f;M5&#xff0c;M7是不是也这样&#xff1f…

JAVA抽象概念大揭秘:用生动有趣的方式,带你领略编程的无限可能

抽象的概念 抽象类和抽象方法是面向对象编程中的重要概念&#xff0c;用于实现抽象和继承的特性。抽象类是不能被实例化的类&#xff0c;通常用作其他类的基类。抽象方法是在抽象类中声明但没有具体实现的方法&#xff0c;需要在子类中实现具体的功能。 抽象类的用途 假设我…

数据通信——应用层(Telnet与WWW)

一&#xff0c;引言 我们使用交换机和路由器以及其它网络设备时&#xff0c;需要进行一些配置&#xff0c;因此需要登录的设备内部进行操作。登录到设备内部的方法有很多&#xff0c;比如通过console口或者其他串口与对端设备相连&#xff0c;也可以通过wifi无线连接&#xff0…

NET MVC中如何使用Element-Plus

目的 在Net Mvc5或者Net Core Mvc中&#xff0c;我们如何通过cdn的放引入Element-Plus并&#xff0c;使用Element-Plus相关的组件&#xff0c;包含Vue-Icon和多语言的使用。 准备工作 1.这里为了方便&#xff0c;我们直接使用html文件来代替Mvc项目。新建一个index.html文件…

硬件知识:DDR3、DDR4和DDR5内存条有啥区别,看完你就懂

目录 一、DDR3内存 二、DDR4内存 三、DDR5内存 DDR3、DDR4和DDR5是计算机内存类型的名称&#xff0c;代表第三代、第四代和第五代双倍数据速率&#xff08;Double Data Rate&#xff0c;简称DDR&#xff09;同步动态随机存取存储器&#xff08;SDRAM&#xff09;。 不同内存…

小程序开发平台源码系统 +功能丰富 +有完整搭建教程

大家好啊&#xff0c;今天要给大家分享的这款系统可就厉害了。全新升级的小程序开发平台源码系统&#xff0c;其中包含了15项不同小程序功能&#xff0c;各行各业都有。一起来看看吧。以下是部分功能实现代码&#xff1a; 系统特色功能一览&#xff1a; 一、微同城本地生活服务…

项目管理中,进度管理是决定成败的关键因素!(建议收藏)

项目管理的主要目标在于确保员工充分理解其责任的目的和关键性&#xff0c;从而使其工作更具焦点和步骤性&#xff0c;以实现一目了然的效果。以小王在十字路口为例&#xff0c;项目经理就如同他的指路人&#xff0c;使其明确自己的方向&#xff0c;避免走错路。 在项目中&…

华测监测预警系统 2.2---任意文件读取漏洞

目录 1. 资产搜集 2. 漏洞复现 3. 实战总结 1. 资产搜集 直接上fofa 和 hunter 个人推荐hunter可以看到icp备案公司直接提交盒子就行了 FOFA语法 app”华测监测预警系统2.2” Hunter语法 web.body”华测监测预警系统2.2” 2. 漏洞复现 这里手动复现的&#xff0c;目录是/…

Kylin麒麟系统下安装人大金仓

虚拟机在线安装 install open-vm-tools-desktop -y 简要介绍 人大金仓数据库管理系统KingbaseES&#xff08;简称&#xff1a;金仓数据库或KingbaseES&#xff09;是北京人大金仓信息技术股份有限公司自主研制开发的具有自主知识产权的通用关系型数据库管理系统。金仓数据库主…

设计模式-装饰者模式

装饰者模式-简介 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。这种类型的设计模式属于结构型模式&#xff0c;它是作为现有的类的一个包装。 装饰器模式通过将对象包装在装饰器类中&#xff0c;以…

Unity中Shader的深度偏移Offset

文章目录 前言一、深度偏移一般用于什么时候1、深度偏移一般用于两个模型 重合在同一平面时&#xff0c;在其中一个模型上使用深度偏移后&#xff0c;就能区别出两个模型的深度&#xff0c;从而消除闪动2、虽然&#xff0c;可以让两个模型在深度上错开一点点&#xff0c;来解决…