Vue3 异步组件 suspense使用详解

 更新时间:2022年12月28日 16:25:05   作者:_Rookie._  
vue在解析我们的组件时, 是通过打包成一个 js 文件,当我们的一个组件 引入过多子组件是,页面的首屏加载时间 由最后一个组件决定 优化的一种方式就是采用异步组件,这篇文章主要介绍了Vue3 异步组件 suspense,需要的朋友可以参考下

vue在解析我们的组件时, 是通过打包成一个 js 文件,当我们的一个组件 引入过多子组件是,页面的首屏加载时间 由最后一个组件决定 优化的一种方式就是采用异步组件 ,先给慢的组件一个提示语或者 骨架屏 ,内容回来在显示内容

结合elementui 使用

代码  

<template>
  <div class="layout">
    <h1>suspense</h1>
    <Suspense>
        <template #default>
            <sus></sus>
        </template>
        <template #fallback>
              <copyVue/>
        </template>
    </Suspense>
  </div>
</template>
<script lang="ts" setup>
import { defineAsyncComponent } from "vue";
import copyVue from "./sus/copy.vue";
let sus = defineAsyncComponent(() => import("./sus/index.vue"));
</script>
<style scoped lang="scss">
 $bg:#ccc;
 .layout{
    width: 800px;
    height: 400px;
    background-color: $bg;
    margin: auto;
 }
</style>

引入  defineAsyncComponent   定义异步组件 ,这个api 接收 一个 一个函数 ,函数返回值 为 需要 后来显示的组件  , copyVue 为预先显示的组件 或者自定义内容 

 <Suspense>
        <template #default>
            <sus></sus>
        </template>
        <template #fallback>
              <copyVue/>
        </template>
    </Suspense>

使用 suspense  内置组件 在该组件内 使用 命名插槽 官方 定义的   

  #default  放后来显示的组件

 #fallback  放置 预先显示的内容

要想组件变成异步 组件 可以使用 顶层 await 技术  即 不用再 async 函数内使用 那个该组件就变成 异步组件 代码

<template>
    <div class="sus">
        <img class="img" :src="res.url" alt="">
        <h1 class="posi">{{res.name }}</h1>
        <h1 class="posi">{{ res.des }}</h1>
    </div>
</template>
<script lang="ts" setup>
import axios from 'axios'
import './com.scss'
let fn = ()=>{
    return new Promise(  (resolve,reject)=>{
         setTimeout(async() => {
            resolve(axios.get('/data.json'))
         }, 2000);
    })
 }
 let {data:{data:res}}:any =  await   fn()
  console.log(res);
</script>
<style scoped lang='scss'>
 
.sus{
    width: 100%;
    height: 200px;
    background-color: #999;
}
 
</style>

copyvue

<template>
    <div  v-loading="loading" element-loading-text="加载中..." 
    element-loading-background="rgba(122, 122, 122, 0.8)" class="sus">
    </div>
</template>
<script lang="ts" setup>
import axios from 'axios'
import { ref } from 'vue'
const loading = ref(true)
</script>
<style scoped lang='scss'>
.sus{
    width: 100%;
    height: 200px;
}
 
</style>

scss

.posi{
    height: 50px;
    background-color: rgb(209, 136, 136);
    margin-top: 20px;
 }
 .img{
     width: 30px;
     height: 30px;
     background-color: rgb(113, 52, 52);
 }

 public 下的 data.json 

{
    "data":{
         "name":"你好世界",
         "url":"./favicon.ico",
         "des":"世界是个荒原"
    }
}

public 下的  内容 回当成 服务的  '/xxx' 请求路径  get可以请求 到文件内容

http://localhost:5173/data.json

到此这篇关于Vue3 异步组件 suspense的文章就介绍到这了,更多相关Vue3 异步组件 suspense内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决Antd Table表头加Icon和气泡提示的坑

    解决Antd Table表头加Icon和气泡提示的坑

    这篇文章主要介绍了解决Antd Table表头加Icon和气泡提示的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • useEffect理解React、Vue设计理念的不同

    useEffect理解React、Vue设计理念的不同

    这篇文章主要为大家介绍了useEffect理解React、Vue设计理念的不同详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • element-ui 限制日期选择的方法(datepicker)

    element-ui 限制日期选择的方法(datepicker)

    本篇文章主要介绍了element-ui 限制日期选择的方法(datepicker),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • vue项目查看vue版本及cli版本的实现方式

    vue项目查看vue版本及cli版本的实现方式

    这篇文章主要介绍了vue项目查看vue版本及cli版本的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Vue.js中自定义Markdown插件实现References解析(推荐)

    Vue.js中自定义Markdown插件实现References解析(推荐)

    本文主要写的是,如何编写一个插件来解析<references>标签,并将其转换为HTML,这种方法可以应用于其他自定义标签和功能,为Vue.js应用程序中的Markdown渲染提供了极大的灵活性,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • vue 遮罩层阻止默认滚动事件操作

    vue 遮罩层阻止默认滚动事件操作

    这篇文章主要介绍了vue 遮罩层阻止默认滚动事件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Vue实现导出Excel表格文件提示“文件已损坏无法打开”的解决方法

    Vue实现导出Excel表格文件提示“文件已损坏无法打开”的解决方法

    xlsx用于读取解析和写入Excel文件的JavaScript库,它提供了一系列的API处理Excel文件,使用该库,可以将数据转换Excel文件并下载到本地,适用于在前端直接生成Excel文件,这篇文章主要介绍了Vue实现导出Excel表格,提示文件已损坏,无法打开的解决方法,需要的朋友可以参考下
    2024-01-01
  • vue项目依赖升级报错处理方式

    vue项目依赖升级报错处理方式

    这篇文章主要介绍了vue项目依赖升级报错处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue开发table数据合并实现详解

    vue开发table数据合并实现详解

    这篇文章主要为大家介绍了vue开发table数据合并实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Vue代码分割懒加载的实现方法

    Vue代码分割懒加载的实现方法

    这篇文章主要给大家介绍了关于Vue代码分割懒加载的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11

最新评论