首页 > 其他分享 >vite+vue3展示文件夹内的所有组件

vite+vue3展示文件夹内的所有组件

时间:2024-06-13 14:56:44浏览次数:8  
标签:filesNameList vue const markRaw 文件夹 vue3 组件 import vite

https://www.cnblogs.com/y-shmily/p/16546743.html

 

在组件目录下新建index.js

复制代码
import { markRaw } from "vue";
const filesNameList = [];
const files = import.meta.glob("./*.vue");

for (const key in files) {
  const fileName = key.replace(/(\.\/|\.vue)/g, "");
  filesNameList.push(fileName);
}
// 导出当前目录下的所有.vue的文件
export default markRaw(filesNameList);
复制代码

展示所有组件 index.vue

复制代码
<template>
  <div class="drag-box">
    <div class="head">
      <h3>组件列表</h3>
    </div>
    <div class="compList">
      <!-- 渲染所有组件 -->
      <el-card
        class="items"
        shadow="hover"
        v-for="element in componentList"
        :key="element.FileName"
      >
        <div class="title"><b>组件名: </b>{{ element.FileName }}</div>
        <div class="compMian">
          <component :is="element.component"></component>
        </div>
      </el-card>
    </div>
  </div>
</template>

<script setup>
import { ref, defineAsyncComponent, markRaw } from "vue";
// 引入modules目录下所有的模板名称数组
import allComps from "./modules";
const componentList = ref([]);
allComps.map((v) => {
  let item = {
    FileName: "",
    component: null,
  };
  item.FileName = v;
  // 导入组件
  item.component = markRaw(
    defineAsyncComponent(() => import(`./modules/${v}.vue`))
  );
  // 组件列表追加组件信息
  componentList.value.push(item);
});
</script>

<style lang="less" scoped>
.drag-box .items {
  width: 100%;
  margin: 20px 0;
  border-bottom: solid 1px #999;
  // background-color: #eee;
  .title {
    font-size: 18px;
    line-height: 1.5;
    margin-bottom: 25px;
    border-bottom: solid 1px #eee;
    b {
      font-size: 22px;
    }
  }
  .compMian {
    background-color: #fff;
  }
}
</style>
复制代码

目录结构

import { markRaw } from "vue"; const filesNameList = []; const files = import.meta.glob("./*.vue");
for (const key in files) {   const fileName = key.replace(/(\.\/|\.vue)/g, "");   filesNameList.push(fileName); } // 导出当前目录下的所有.vue的文件 export default markRaw(filesNameList);

标签:filesNameList,vue,const,markRaw,文件夹,vue3,组件,import,vite
From: https://www.cnblogs.com/chinasoft/p/18245859

相关文章

  • java+vue3+el-tree实现树形结构操作
    基于springboot+vue3elementPlus实现树形结构数据的添加、删除和页面展示效果如下代码如下,业务部分可以自行修改java后台代码importcom.baomidou.mybatisplus.core.conditions.query.QueryWrapper;importcom.daztk.mes.common.annotation.LogOperation;import......
  • vue3 修改element-plus主题颜色(css版)
    vue3修改主题颜色_若依vue3改默认主题色-CSDN博客上面的是js修改-----------------------------------------------------------------------------------------------------------------------1.新建一个APPStyle.css文件代码/*8这里是要替换的样式,可以参开下面注释......
  • 国思RDIF.vNext全新低代码快速开发框架平台6.1版本发布(支持vue2、vue3)
    1、平台介绍RDIF.vNext,全新低代码快速开发集成框架平台,给用户和开发者最佳的.Net框架平台方案,为企业快速构建跨平台、企业级的应用提供强大支持。RDIF.vNext的前身是RDIFramework框架,RDIF(RapiddevelopIntegrateFramework,vNext代表全新下一代),全新设计,全新开发,代码量减......
  • vue3探索——在setup script中使用tsx语法
    vue3+ts+eslint配置tsxvite.config.ts安装@vitejs/plugin-vue-jsx#npmnpmi@vitejs/plugin-vue-jsx-D#yarnyarnadd@vitejs/plugin-vue-jsx-D#pnpmpnpmadd@vitejs/plugin-vue-jsx-D在vite.config.ts中使用……importvueJsxfrom'@vitejs/plugin-vue......
  • Vue3——toRef和toRefs
    toRef和toRefs作用toRef和toRefs功能相同,都是将一个响应式对象中的每个属性,转成ref对象,但是toRefs可以批量转换。语法:>lettemp=toRef(对象.属性名)和let{temp1,temp2,temp3,...}=toRefs(对象)模版中使用运行结果代码<template><divclass="root"><h......
  • uniapp vue3 实现自定义Switch效果
    <template><viewclass="container"@click="toggleSwitch"><label:class="isOn?'switch-checked':'switch-nochecked'"><viewclass="open">{{activ......
  • Vue3——ref和reactive的比较
    定义数据ref用来定义基础类型数据和对象类型数据reactive只能定义对象类型数据使用方式ref定义的响应式变量必须使用.valuereactive定义的响应式变量不能使用.value,直接使用响应式对象,但是重新分配一个新对象,会失去响应式,解决方式使用Object.assign(oldObject,newObjec......
  • Vue3——ref定义响应式数据
    ref作用ref:定义响应式变量,既可定义基础类型数据,也可以定义对象类型。语法格式:lettemp=ref(初始值)返回值:temp是一个RefImpl的实例对象,简称ref对象,ref对象的value属性是响应式。注意点:JS/TS中使用变量temp操作数据时,需要temp.value,但是在模板中不需要temp.value,直接......
  • 【CMake系列】09-cmake install 一般文件 文件夹 代码文件
    上一节,我们学习了项目构建后、目标的安装,本节学习的内容是对于一般文件,文件夹以及源代码的安装本节的文件依然使用file(WRITExxx.xx)来创建,不依赖额外的文件本专栏的实践代码全部放在github上,欢迎star!!!如有问题,欢迎留言、或加群【392784757】交流文件安装CMakeLi......
  • vue3 dom ref 实现,子组件ref实现,defineExpose暴露子组件作用域
    示例代码App.vue<template><header><imgalt="Vuelogo"class="logo"src="@/assets/logo.svg"width="125"height="125"/><divclass="wrapper"><HelloWorld......