首页 > 其他分享 >Vue3+vite项目中如何动态导入并创建多个全局组件

Vue3+vite项目中如何动态导入并创建多个全局组件

时间:2023-03-24 15:13:18浏览次数:39  
标签:files vue customComponents app 导入 components Vue3 import vite

背景

实际开发项目中,有些时候我们需要通过全局注册多个自定义组件,但是每个组件都导入一次,将会导致代码很冗余。

实现方案

customComponents/index.js

const files = import.meta.globEager("@/customComponents/*.vue");


const components = {
    install: function (app) {
        for (let compPath in files) {
            let compName = files[compPath]["default"]["name"];
            app.component(compName, files[compPath]["default"]);
        }
    },
};
export default components;

main.js

import { createApp } from "vue";
import App from "./App.vue";
import router from "./modules/router";
import pinia from "./modules/pinia";

import components from "@/customComponents";

const app = createApp(App);
app.use(router);
app.use(pinia);
app.use(components);
app.mount("#app");

我曾尝试使用  Vue3 的异步组件,使用 import 动态导入,但是会报错,如果有懂的大神帮忙解答下是什么原因

app.component('MyComponent', defineAsyncComponent(() =>
  import('./components/MyComponent.vue')
))

报错:

runtime-core.esm-bundler.js:38 [Vue warn]: Unhandled error during execution of async component loader
at <AsyncComponentWrapper key=0 >
Uncaught (in promise) TypeError: Failed to resolve module specifier '@/customComponents/Button.vue'

标签:files,vue,customComponents,app,导入,components,Vue3,import,vite
From: https://www.cnblogs.com/beileixinqing/p/17251816.html

相关文章

  • Apinto网关导入Swagger报错问题记录
    问题描述ApintoDashboard已经部署完成,想通过导入Swagger文件的方式快速把接口同步到ApintoDashboard,但此时导入报错:CLUSTERDOWNHashslotnotserved,如下问题原因Re......
  • Spring Boot(二):第一种导入依赖方式的实战案例
    文章目录第一种导入依赖方式的实战案例一、导入依赖二、依赖传递结构图三、开发案例代码第一种导入依赖方式的实战案例一、导入依赖<?xmlversion="1.0"encoding="UTF-8"?>......
  • QGIS 导入文本数据(WKT)
    在做GIS数据处理的时候,经常会遇到原始数据是text、csv、Excel等格式的数据。要使用数据前提是要先转换数据。这里是介绍用QGIS导入数据。打开导入方式如下(根......
  • vue3组件之间传值
    父组件向子组件传值1.简单的props方式//fater.vue<divclass="father"><children:carr="arr"/></div><scriptsetuplang="ts">importchildrenfrom'./......
  • fabricjs如何导入echarts
    Fabric.js是一个强大的HTML5canvas库,而ECharts是一个基于JavaScript的图表库。要将ECharts导入到Fabric.js中,您需要先将ECharts渲染到一个离屏canvas,然后将......
  • Vue3中使用pinia
    Vue3中使用piniaPinia是一个轻量级的、基于Vue3的状态管理库,它的设计目标是提供简单易用的API,使得开发者能够更加便捷地管理Vue3应用程序中的状态。与Vuex相比,Pinia更加......
  • vite 如何使用 element-ui
    vue2vite如何使用element-ui项目版本如下{"dependencies":{"element-ui":"^2.15.13","vue":"^2.7.7"},"devDependencies":{"@vitejs/plu......
  • vite scss相关
    viteisassScss与Sass异同vite项目安装sassnpmisass-D然后在项目中添加如下即可<stylescopelang="scss"></style>项目主题切换利用sass的混入特性,实现切换......
  • 如何使用Navicat将外部Excel表格导入数据库
    在我们的开发过程中,经常要使用到数据库,而且往往数据库中会有大量数据,这时候我们肯定不能用sql语句一个个输入或者用可视化界面一个个输入,数据比较少只有几十条还可行,......
  • Vue3
    Vue3.0Devtools6.5.0开发者工具下载和安装1、官网地址下载:GitHub-vuejs/devtools:⚙️BrowserdevtoolsextensionfordebuggingVue.jsapplications.2、下载安装......