批量引入模块
webpack
语法:
require.context(directory, useSubdirectories, regExp);
- directory
- useSubdirectories
- regExp
参数 | 描述 | 类型 | 备注 | |
---|---|---|---|---|
directory | 要查找的目录的路径 | string | ||
useSubdirectories | 是否查找子目录 | boolean | ||
regExp | 要匹配文件的正则表达式 | /*\.vue/ |
// 查找当前目录下的 modules 文件夹下的所有 js 文件
let modules = require.context('./modules', false, /\.js/)
// 获取查找到的第一个模块
let first = modules.keys()[0]
// 加载对应模块
modules(first)
vue-router 自动加载当前文件夹所有路径
vite
语法:
import.meta.globEager('./modules/**/*.ts'): Array<module>
使用场景:
- 批量引入路由
// vue-router中使用
const modules = import.meta.globEager('./modules/**/*.ts');
const routeList: AppRouteModule[] = [];
// 加入到路由集合中
Object.keys(modules).forEach((key) => {
const mod = modules[key].default || {};
const modList = Array.isArray(mod) ? [...mod] : [mod];
routeModuleList.push(...modList);
});
export routeList
// modules 下的ts路由文件格式
import type { AppRouteModule } from '/@/router/types';
const about: AppRouteModule = {
path: '/about',
.../
}
export default