移动系统liao
4 天以前 3373a075081a707b094c6225759a776d18ee1e53
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { markRaw } from 'vue';
// 定义组件类型
type Component = any;
 
const resultComps: Record<string, Component> = {};
 
// 要排除的组件名称数组
const excludeComponents = ['scheduleEdit'];
 
// 使用 import.meta.glob 动态导入当前目录中的所有 .vue 文件,急切导入
const requireComponent = import.meta.glob('./*.vue', { eager: true });
// console.log(requireComponent);
 
Object.keys(requireComponent).forEach((fileName: string) => {
    // 处理文件名,去掉开头的 './' 和结尾的文件扩展名
    const componentName = fileName.replace(/^\.\/(.*)\.\w+$/, '$1');
 
    // 如果组件名称在排除数组中,跳过导入
    if (excludeComponents.includes(componentName)) {
        return;
    }
 
    // 确保模块导出存在并且是默认导出
    const componentModule = requireComponent[fileName] as { default: Component };
 
    // 将组件添加到 resultComps 中,使用处理后的文件名作为键
    resultComps[componentName] = componentModule.default;
});
 
// 标记 resultComps 为原始对象,避免其被设为响应式
export default markRaw(resultComps);