当APi模块有很多文件的时候,需要一个一个导入,这是我们可以创建一个自动导入的方法,简化代码和工作量;
以下是针对我项目中使用的代码:
/*
* @Description: 自动化导入接口文件,使用时请严格按照文件名取用
* @Date: 2020-07-07 17:20:30
* @LastEditTime: 2020-07-23 15:04:47
*/
const importAll = require.context('./', false, /^(?!internals).*\/(?!.*(index|axios)).*\.js$/)
const modules = {}
importAll.keys().map(path => {
const reg = /\.\/(.+?)\./g
const moduleName = reg.exec(path)[1]
// 兼容处理:.default获取ES6规范暴露的内容; 后者获取commonJS规范暴露的内容
const api = importAll(path).default || importAll(path)
Object.keys(api).forEach(key => {
modules[moduleName] = {
...modules[moduleName],
[key]: api[key]
}
})
})
export default modules
注明:
1,在正则过滤时,取消了对index和axios文件的选用,只取其他js的文件
2,由于我项目使用接口时用了文件路径做索引,所以以上代码导出结果并不直接是接口函数,中间有一层文件名,导出结果示例如下:
{
person: {
getName, getOld
}
}
person为文件名,./person.js,getName和getOld都是接口方法
3,根据自动化所需要导入的文件,和导出的结果可以相应做其他修改
posted on
浙公网安备 33010602011771号