如果想在vite
中批量导入某些文件,实现项目的模块化,vite
提供的import.meta.globEager
函数就很好用,比如用在路由模块化:
一、需求
不想把路由文件全部放在一个文件里面,找的时候要拖动很麻烦,就想着把每一个模块的路由按功能分成单个的文件
二、思路
在routers
文件夹内新增一个modules
文件夹:里面放不同功能的routers
文件,然后在Vue
引入的路由入口处批量导入模块化的routers
。
三、实现
结构:
模块化里面的内容:
例如:routers/modules/menu.ts
在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,
];
注意:
- 一个 *:匹配当前目录下的文件
- 两个 *:匹配当前目录及其嵌套的全部子目录下的文件