Vue3 新增标签

  • fragment 标签 --> 包裹标签

    vue3 支持组件内的 HTML 结构不包含在一个根标签内的写法,实现方式就是在最外层包裹着一层 fragment 标签,在最终渲染时,又将 fragment 标签进行了删除。

    可以有效优化 HTML 结构

  • Teleport 标签 --> 传送标签

    将组件内的某一部分结构 传送 到其他组件的指定位置进行展示

    <template>
      <button>显示</button>
      <!-- to 属性指定传送到的HTML结构位置,可以使用类选择器 -->
      <teleport to="body">
        <!-- 此处的结构将被插入到 body 根标签位置 -->
      </teleport>
    </template>
    

    对于需要使用定位的元素,可以使用此标签进行包裹,会将包裹的内部结构插入到指定的区域进行展示

  • Suspense 标签

    用于异步加载的组件,在异步组件加载完成前和加载完成后,显示不同的页面内容,避免异步组件加载完成后,突然的出现,造成页面的抖动效果

  • JS 定义异步组件

    // 引入异步组件API
    import { defineAsyncComponent } from "vue";
    
    // 定义异步组件 A
    const A = defineAsyncComponent(() => import("./组件URL.vue"));
    
    export default {
      // 注册异步组件 A
      components: { A },
    };
    
  • HTML 定义 Suspense 标签

    <template>
      <div></div>
      <!-- 定义 Suspense 标签 -->
      <Suspense>
        <!-- 插槽一 -->
        <template v-solt:defaute>
          <!-- 异步组件加载完成后,在 Suspense 插槽位置展示的内容 -->
        </template>
    
        <!-- 插槽二 -->
        <template v-solt:fallback>
          <!-- 异步组件加载完成前,在 Suspense 插槽位置展示的内容 -->
        </template>
      </Suspense>
    </template>
    

    实现原理就是利用插槽 solt ,在加载完成前和加载完成后展示不同的插槽内容。加载完成前对应的插槽名称为: fallback , 加载完成后对应的插槽名称为: default

    使用 异步组件引入的方式 和 Suspense 标签时,可将 setup 函数的返回值写为 Promise 对象 或者 await 和 async 修饰符,而同步组件时,setup 函数的返回值不能为 Promise 对象。

上次更新:
贡献者: Roking-wang