vue3 异步组件

vue3中使用异步组件

vue3中使用异步组件可以解决两个问题:
1.提升性能(类似于懒加载)
2.分包
下载插件 npm i @vueuse/core -S

1.提升性能(懒加载)

父组件

<template><div><h1>异步组件</h1><A /><B /><div ref="target"><C v-if="targetIsVisible" /></div></div>
</template><script setup>import { defineAsyncComponent } from 'vue';import { useIntersectionObserver } from '@vueuse/core';import A from './A.vue';import B from './B.vue';const C = defineAsyncComponent(() => import('./C.vue'));// 安装异步组件需要安装的包 npm i @vueuse/core -Sconst target = ref(null);const targetIsVisible = ref(false);const { stop } = useIntersectionObserver(target, ([{ isIntersecting }]) => {targetIsVisible.value = isIntersecting;});
</script>
<style></style>

子组件A:

<template><div style="height: 500px; background-color: aquamarine">A</div>
</template><script setup>
</script><style></style>

子组件B:

<template><div style="height: 500px; background-color: chocolate"> B </div>
</template><script setup></script><style></style>

子组件C:

<template><div> C </div><img src="../../assets/logo.png" alt="" />
</template><script setup></script><style></style>

页面没有滑到C组件的位置的时候,C组件不加载
在这里插入图片描述滑到C组建的位置的时候C组件才加载
在这里插入图片描述

2.分包

vue在打包的时候会把异步组件分成单独的包,不与总包合在一起,异步组件需要搭配vue3内部组价 Suspense 使用
父组件

<template><div><h1>异步组件</h1><Suspense><template #default><A /></template><template #fallback> ...加载中 </template></Suspense><B /><!-- <C /> --><div ref="target"><C v-if="targetIsVisible" /></div></div>
</template><script setup>import { defineAsyncComponent } from 'vue';import { useIntersectionObserver } from '@vueuse/core';// import A from './A.vue';import B from './B.vue';// import C from './C.vue';const A = defineAsyncComponent(() => import('./A.vue'));// 安装异步组件需要安装的包 npm i @vueuse/core -Sconst target = ref(null);const targetIsVisible = ref(false);const { stop } = useIntersectionObserver(target, ([{ isIntersecting }]) => {targetIsVisible.value = isIntersecting;});
</script><style></style>

子组件A:BC 组件未修改,

<template><div style="height: 500px; background-color: aquamarine">A{{ list }}</div>
</template><script setup>import axios from 'axios';import { ref } from 'vue';const list = ref([]);let res = await axios.get('http://vapi.youlai.tech/api/v1/menus');list.value = res.data.data;
</script><style></style>

文件打包过后dist文件夹里边的会多出来一个A.xxxxxx.js,C.xxxxxx.js,异步组件会被单独分包出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/7564.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Scala集合与Java集合的互转函数asScala与asJava

只有引入隐式转换类 JavaConverters&#xff0c;才能使用Scala集合与Java集合之间的转换函数。 为方便理解&#xff0c;看下面的例子&#xff1a; import scala.collection.JavaConverters._ val javaList java.util.Arrays.asList("hi", "bye") val sca…

RabbitMQ - 死信队列,延时队列

Time-To-Live and Expiration — RabbitMQ 一、死信队列 Dead Letter Exchanges — RabbitMQ 死信队列&#xff1a; DLX 全称&#xff08;Dead-Letter-Exchange&#xff09;,称之为死信交换器&#xff0c;当消息变成一个死信之后&#xff0c;如果这个消息所在的队列存在x-d…

Hive(15):Table(表)DDL操作

1 Describe table Hive中的DESCRIBE table语句用于显示Hive中表的元数据信息 describe formatted [db_name.]table_name; describe extended [db_name.]table_name; 如果指定了EXTENDED关键字,则它将以Thrift序列化形式显示表的所有元数据。如果指定了FORMATTED关键字,则它…

赛效:怎么在线给Word文档加图片水印

1&#xff1a;在电脑网页上打开云组件&#xff0c;点击“Word转换”菜单里的“Word加水印&#xff08;图片&#xff09;”。 2&#xff1a;点击选择文件添加Word文档。 3&#xff1a;点击“选择水印图片”上传做水印的图片。 4&#xff1a;水印图片添加成功后可以选择水印角度&…

C#核心知识回顾——1.结构体、构造函数、GC、成员属性、索引器

1.结构体&#xff1a; 在 C# 中&#xff0c;结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。例如我定义了一个结构体&#xff0c;它有两个变量&#xff0c;创建一个这个类型的结构体&#xff0c;通过一个变量名调用多个变量&#xff0c;这些变量可…

机器学习复习7

机器学习复习7 1 - 根据下图中绘制的决策树&#xff0c;如果一个动物的耳朵是软的&#xff0c;脸型是圆的&#xff0c;并且有胡须&#xff0c;那么这个模型会预测它是猫还是不是猫&#xff1f; A. 不是猫 B. 是猫 **答案&#xff1a;B ** 2 - 以一棵决策树学习来对垃圾邮件和非…

uniapp radio如何实现取消选中

uniapp 内置radio组件明确表示&#xff0c;不能取消选中&#xff0c;那如果要实现取消选中呢&#xff1f; 只要在外层加上label或者其他标签包裹&#xff0c;或者直接加入click事件然后加入事件控制radio的值改变即可 <label class"radio" click"changeAll&…

vue 连载软件大陆 vue之新手村,vue创建运行指导(如:vue脚手架,创建启动项目,配置等)

第一章 ’vue功法启动‘ 宇宙之间&#xff0c;开天辟地&#xff0c;从无到有&#xff0c;有一颗蔚蓝色的星球&#xff0c;名为软件大陆&#xff0c;如今大陆上有着众多老牌家族势力的诞生,如&#xff1a;c家族、c家族、java家族、.net家族、等&#xff0c; 而我们今天要说的是…

机器人学科建设沙盘套件!mechArm机械臂智慧农业3D分拣套装详解

作为最热门的技术领域&#xff0c;机器人技术正在彻底改变产业&#xff0c;并推动全球的创新。为了满足这个快速发展的领域对技术人才日益增长的需求&#xff0c;高校开发了一个开创性的机器人教育解决方案。这个创新的解决方案将自动化水果采摘机的模拟与水果分拣和运送的自动…

Simulink 中基于 FPGA 的波束成形:算法设计(附源码)

一、前言 本示例显示了在 Simulink中开发适用于在硬件&#xff08;如现场可编程门阵列 &#xff08;FPGA&#xff09;&#xff09;上实现的波束成形器的工作流程的前半部分。它还演示如何将实现模型的结果与行为模型的结果进行比较。 示例 Simulink 中基于 FPGA 的波束成形&…

docker专题系列之十五:卸载docker

一、准备工作 1.杀死docker有关的容器&#xff1a; docker kill $(docker ps -a -q)2.删除所有docker容器&#xff1a; docker rm $(docker ps -a -q)3.删除所有docker镜像&#xff1a; docker rmi $(docker images -q)4.停止 docker 服务&#xff1a; systemctl stop dock…

redis知识复习

redis知识复习 redis基础知识一. redis的认识1. 非关系型数据库 与 传统数据库 的区别2. 安装redis并设置自启动3. 熟悉命令行客户端4. 熟悉图形化工具RDM 二. redis的命令与数据结构1. 数据结构介绍2. redis通用命令&#xff08;熟练掌握&#xff09; 三. redis的Java客户端1.…