首页IT科技vue的异步(Vue3系列10–异步组件&代码分包&suspense)

vue的异步(Vue3系列10–异步组件&代码分包&suspense)

时间2025-09-16 00:13:47分类IT科技浏览7660
导读:异步组件 在大型应用中,我们可能需要将应用分割成小一些的代码块 并且减少主包的体积,这时候就可以使用异步组件...

异步组件

在大型应用中                    ,我们可能需要将应用分割成小一些的代码块 并且减少主包的体积                           ,这时候就可以使用异步组件

顶层await:在setup语法糖里面 使用方法         ,<script setup>中可以使用顶层await                    。结果代码会被编译成async setup()

在项目进行打包后 会生成打包后的文件:

dist/index.html 程序入口

dist/assets/index.e0b7c3a3.css

dist/assets/index.c3955c07.js 主逻辑

在用户访问的时候               ,会加载index.html                            ,html回去加载index.c3955c07.js              ,如果这个文件太大          ,就会出现白屏                           。可以通过异步组件来优化         。

(1)在public\data.json

(2)src\components\A\server.ts建立请求接口

type NameList = { name: string } export const axios = (url: string): Promise<NameList[]> => { //传入url                             ,返回NameList数组 return new Promise((resolve) => { let xhl: XMLHttpRequest = new XMLHttpRequest() // 去调用接口 xhl.open(GET, url) // 获取数据 xhl.onreadystatechange = () => { // 变化的时候就调用 if (xhl.readyState === 4 && xhl.status) { // 调用完成                 ,且接口正常 setTimeout(() => { resolve(JSON.parse(xhl.responseText)) // 返回的格式 }, 2000); } } xhl.send(null) //发送数据 }) }

(3)在src\components\A\index.vue文件

<template> <div> 我是组件A <div :key="item.name" v-for="item in list"> {{item.name}} </div> </div> </template> <script setup lang="ts"> import { axios } from ./server; const list = await axios(./data.json) console.log(list) </script> <style scoped lang="less"> </style>

(4)在src\App.vue引用

<template> <div> <Suspense> <template #default> <!-- 组件加载完成时候调用 --> <A></A> </template> <template #fallback> <!-- 组件加载的时候调用     ,加载完成后就会替换掉 --> <div> loading... </div> </template> </Suspense> </div> </template> <script setup lang="ts"> // import A from ./components/A/index.vue // 改成异步组件                              ,不能这么引入                      ,数据显示不出来 import { ref, defineAsyncComponent } from vue const name = ref<string>(header) const A = defineAsyncComponent(() => import(./components/A/index.vue)) // 引入后,还需要配合suspense使用 // 只能通过import函数形式引入                         ,单遇到awite的时候                           ,把我们的逻辑拆分出去     ,打包的时候就多包 </script>
声明:本站所有文章                    ,如无特殊说明或标注                           ,均为本站原创发布               。任何个人或组织         ,在未征得本站同意时               ,禁止复制                 、盗用                             、采集          、发布本站内容到任何网站             、书籍等各类媒体平台                            。如若本站内容侵犯了原著者的合法权益                            ,可联系我们进行处理             。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
归纳总结搜索引擎的使用技巧(搜索引擎的技巧有哪些方面) yolov1算法(yolov5优化器及超参数设置)