【vue3】defineAsyncComponent构建后路径错误解决

defineAsyncComponent是什么?

defineAsyncComponent用于异步加载组件,该方法接收一个返回promise的加载函数。ES 模块动态导入也是返回一个promise函数,所以多数情况下我们会将它们搭配使用,如:
const header = defindAsyncComponent(()=>import('./header.vue'))

问题描述

我正在使用defineAsyncComponent动态导入当前文件夹中的组件,如:

const currentSubApp = defineAsyncComponent(() => import(`./${subAppName}.vue`))

这在我本地运行的时候,可以打开没有问题。但是构建到prod后文件指向错误。

vite build后dist文件夹中没有生成动态导入的文件

解决

const modules: any = import.meta.glob('./*.vue')
const currentSubApp = defineAsyncComponent(modules[`./${subAppName}.vue`])
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3中引入了defineAsyncComponent函数和AsyncComponentLoader接,用于实现异步组件的加载和渲染。 1. defineAsyncComponent函数: defineAsyncComponent函数是一个工厂函数,用于创建异步组件。它接受一个返回Promise的函数作为参数,该函数在组件需要被渲染时被调用,返回一个包含组件选项的Promise。这样可以延迟组件的加载和渲染,提高应用的性能。 示例代码如下: ``` import { defineAsyncComponent } from 'vue'; const AsyncComponent = defineAsyncComponent(() => { return import('./AsyncComponent.vue'); }); ``` 在上面的示例中,defineAsyncComponent函数接受一个返回import()函数的箭头函数作为参数,import()函数返回一个Promise,用于异步加载组件文件。当组件需要被渲染时,该Promise会被解析并返回组件选项。 2. AsyncComponentLoader接口: AsyncComponentLoader接口是一个用于异步加载组件的接口。它定义了一个load方法,该方法接受一个组件的标识符作为参数,并返回一个包含组件选项的Promise。 示例代码如下: ``` import { AsyncComponentLoader } from 'vue'; const asyncLoader: AsyncComponentLoader = (componentName) => { return import(`./components/${componentName}.vue`); }; ``` 在上面的示例中,我们定义了一个asyncLoader函数,它接受一个组件名称作为参数,并使用import()函数异步加载对应的组件文件。然后,我们可以将asyncLoader函数传递给Vue的组件选项中,以实现异步加载和渲染。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值