当前位置: 首页 > news >正文

vue3+vite 实现动态引入某个文件夹下的组件 - glob-import的使用

在这里插入图片描述

<template><div class="user-content"><HeaderTitle title="用户详情"></HeaderTitle><div class="main-content"><div><UserForm /></div><div><TableList></TableList></div><div><BarChart /></div><div><component :is="myComponents[currentActive]"></component></div></div></div>
</template>
<script setup lang="ts">
import UserForm from './components/UserForm.vue';
import TableList from './components/TableList.vue';
import BarChart from './components/BarChart.vue';const currentActive = ref('UserForm')
const myComponents = reactive<any>({})
onMounted(async ()=>{const modules:any = import.meta.glob('./components/*.vue');for(const path in modules){const module = await modules[path]();const componentName = path.replace(/^\.\/components\/(.*)\.vue$/,'$1');// 方案一 普通引入// myComponents[componentName] = module.default;// 方案二 异步组件// myComponents[componentName] = defineAsyncComponent(()=>import(path));  // 这种用法vite会有警告myComponents[componentName] = defineAsyncComponent(modules[path]); // 直接使用meta.glob加载的组件即可console.log('myComponents: ', myComponents);}})
</script>

动态引入的使用场景:

  • 场景:一般是通过tab来切换显示不同的组件。tab列表中我们配置好需要显示哪些组件,记录当前活动的tab(currentActive),然后在 component 组件中使用。
  • 优点: 在组件较多的情况下,不用手动写多条引入代码。

vite 官网文档 – glob-import
https://www.vitejs.net/guide/features.html#glob-import
参考文章
Vue3+vite项目中如何动态导入并创建多个全局组件


修改

在这里插入图片描述
在第一次写完之后没有注意到这个警告,查了一下后发现了这个问题解决方法。
在这里插入图片描述

所以我们不能直接只用url的方式动态的import组件,需要直接使用modules中提供对象的值就可以,我居然以为需要用path去加载组件(所以写了()=>import(path)),其实只需要用modules对象中的值就可以啦。


//错误
myComponents[componentName] = defineAsyncComponent(()=>import(path));  // 这种用法vite会有警告//正确
myComponents[componentName] = defineAsyncComponent(modules[path]); // 直接使用meta.glob加载的组件即可

可以看出modules是这样的对象,键是文件的路径,值是()=>import(path)
在这里插入图片描述

http://www.lryc.cn/news/407844.html

相关文章:

  • hhhhh
  • 扫雷小游戏纯后端版
  • RuoYi-Vue-Plus(动态添加移除数据源)
  • idea启动项目报:the command line via JAR manifest or via a classpath file and rerun.
  • vue3 + ts中有哪些类型是由vue3提供的?
  • 【Linux】远程连接Linux虚拟机(MobaXterm)
  • LeetCode Hot100 生成特殊数字的最少操作
  • Spring MVC 应用分层
  • QT--进程
  • 凸优化笔记-基本概念
  • 1858. 数组查找及替换
  • 计算机视觉与面部识别:技术、应用与未来发展
  • 懒人精灵安卓版纯本地离线文字识别插件
  • 在线教育数仓项目(数据采集部分1)
  • 帕金森病(PD)诊断:三种基于语音的深度学习方法
  • 【资料分享】2024钉钉杯大数据挑战赛A题思路解析+代码演示
  • 【优质精选】12节大模型系列教学课程之二:RAG 原理与应用
  • vue3前端开发-小兔鲜项目-产品详情基础数据渲染
  • Docker入门指南:Linux系统下的完整安装步骤与常见问题解答
  • Netty实现数据上下行
  • 【React】事件绑定:深入解析高效处理用户交互的最佳实践
  • SpringCloud:使用OpenFeign优化前面的Nacos实现高效购物车商品信息处理
  • 计算机三级嵌入式笔记(二)——嵌入式处理器
  • 【GoLang】Golang 快速入门(第一篇)
  • Linux中的三类读写函数
  • MATLAB基础应用精讲-【数模应用】二元Probit回归分析
  • 找工作准备刷题Day10 回溯算法 (卡尔41期训练营 7.24)
  • 如何有效的进行小程序的优化
  • FPGA-ROM IP核的使用(2)
  • Manticore Search(es轻量级替代)