一、Fragment
vue2中,组件必须有一个根标签
vue3中,组件可以没有根标签,内部会将多个标签包含在一个Fragment虚拟元素中。
优点:减少标签层级。
二、Teleport(传送门)
作用:将组件的 html 结构移动到指定位置。
用法:<teleport to="指定位置"><teleport>
<teleport to="body">
<div v-if="isshow" class="mask">
<div class="dialog">
<h3>这是弹窗</h3>
<button @click="isshow = false">关闭弹窗</button>
</div>
</div>
</teleport>
三、Suspense
作用:等待异步组件过程中渲染一些额外内容,让用户有更好的体验。
(1)引入异步组件的方式
import { defineAsyncComponent } from 'vue';
const Child = defineAsyncComponent(() => import('./childView.vue')) // 动态(异步)引入
(2)suspense使用方式
<suspense>
<!-- 加载完成后展示的 -->
<template v-slot:default>
<Child></Child>
</template>
<!-- 加载过程中展示的 -->
<template v-slot:fallback>
<h2>稍等,正在加载...</h2>
</template>
</suspense>