学习Vue3 第十八章(异步组件&代码分包&suspense)

简介: 在大型应用中,我们可能需要将应用分割成小一些的代码块 并且减少主包的体积

这一章节建议观看视频教程Vue3 + vite + Ts + pinia + 实战 + 源码_哔哩哔哩_bilibili


异步组件


在大型应用中,我们可能需要将应用分割成小一些的代码块 并且减少主包的体积


这时候就可以使用异步组件


顶层 await


在setup语法糖里面 使用方法


<script setup> 中可以使用顶层 await。结果代码会被编译成 async setup()


<script setup>
const post = await fetch(`/api/post/1`).then(r => r.json())
</script>


父组件引用子组件 通过defineAsyncComponent加载异步配合import 函数模式便可以分包


<script setup lang="ts">
import { reactive, ref, markRaw, toRaw, defineAsyncComponent } from 'vue'
const Dialog = defineAsyncComponent(() => import('../../components/Dialog/index.vue'))
//完整写法
const AsyncComp = defineAsyncComponent({
  // 加载函数
  loader: () => import('./Foo.vue'),
  // 加载异步组件时使用的组件
  loadingComponent: LoadingComponent,
  // 展示加载组件前的延迟时间,默认为 200ms
  delay: 200,
  // 加载失败后展示的组件
  errorComponent: ErrorComponent,
  // 如果提供了一个 timeout 时间限制,并超时了
  // 也会显示这里配置的报错组件,默认值是:Infinity
  timeout: 3000
})


suspense


<suspense> 组件有两个插槽。它们都只接收一个直接子节点。default 插槽里的节点会尽可能展示出来。如果不能,则展示 fallback 插槽里的节点。


     <Suspense>
            <template #default>
                <Dialog>
                    <template #default>
                        <div>我在哪儿</div>
                    </template>
                </Dialog>
            </template>
            <template #fallback>
                <div>loading...</div>
            </template>
        </Suspense>


目录
相关文章
|
2天前
|
JavaScript 开发工具
vite如何打包vue3插件为JSSDK
【9月更文挑战第10天】以下是使用 Vite 打包 Vue 3 插件为 JS SDK 的步骤:首先通过 `npm init vite-plugin-sdk --template vue` 创建 Vue 3 项目并进入项目目录 `cd vite-plugin-sdk`。接着,在 `src` 目录下创建插件文件(如 `myPlugin.js`),并在 `main.js` 中引入和使用该插件。然后,修改 `vite.config.js` 文件以配置打包选项。最后,运行 `npm run build` 进行打包,生成的 `my-plugin-sdk.js` 即为 JS SDK,可在其他项目中引入使用。
|
1天前
|
缓存 JavaScript
vue学习(12)计算属性
vue学习(12)计算属性
11 3
|
1天前
|
JavaScript
vue学习(10)事件修饰符
vue学习(10)事件修饰符
10 3
|
1天前
|
缓存 JavaScript
vue学习(12)计算属性
vue学习(12)计算属性
9 2
|
1天前
|
JavaScript
vue学习(11)键盘事件
vue学习(11)键盘事件
8 2
|
1天前
|
JavaScript
|
1天前
vue3定义暴露一些常量
vue3定义暴露一些常量
|
4天前
|
JavaScript
vue学习(3)模板语法
vue学习(3)模板语法
33 11
|
4天前
|
存储 JavaScript 前端开发
vue学习(2)
vue学习(2)
193 65
|
4天前
|
JavaScript 算法 前端开发
vue学习(1)
vue学习(1)
192 62