Vite中import.meta.globEager的使用

2,408 阅读1分钟

如果想在vite中批量导入某些文件,实现项目的模块化,vite提供的import.meta.globEager函数就很好用,比如用在路由模块化:

一、需求

不想把路由文件全部放在一个文件里面,找的时候要拖动很麻烦,就想着把每一个模块的路由按功能分成单个的文件

二、思路

routers文件夹内新增一个modules文件夹:里面放不同功能的routers文件,然后在Vue引入的路由入口处批量导入模块化的routers

三、实现

结构:

22.png

模块化里面的内容:

例如:routers/modules/menu.ts

23.png

router文件内批量引入modules内模块化的文件并处理:

routers/router.ts

//  导入所有router
const metaRouters = import.meta.globEager("./modules/*.ts");

//  处理路由
export const routerArray: RouteRecordRaw[] = [];
Object.keys(metaRouters).forEach(item => {
    Object.keys(metaRouters[item]).forEach((key: any) => {
        routerArray.push(...metaRouters[item][key]);
    });
});

// 在路由处引入
 const routes: RouteRecordRaw[] = [
    ...routerArray,
  ];

注意:

  • 一个 *:匹配当前目录下的文件
  • 两个 *:匹配当前目录及其嵌套的全部子目录下的文件