ES5环境下如何简化文件夹文件导出,支持解构式require导入
自动批量导出extractors模块(ES5环境)
你可以通过Node.js的fs和path模块自动遍历文件夹内的文件,实现无需手动维护的批量导出,完美适配你的解构式导入需求。
直接替换extractors/index.js为以下代码:
const fs = require('fs'); const path = require('path'); const extractors = {}; // 遍历当前目录下所有文件 const files = fs.readdirSync(__dirname); files.forEach(file => { // 跳过自身和非JS文件 if (file === 'index.js' || path.extname(file) !== '.js') return; // 取文件名(不含后缀)作为导出键名 const exportName = path.basename(file, '.js'); // 导入目标模块 const module = require(path.join(__dirname, file)); // 将模块挂载到导出对象上 extractors[exportName] = module; }); module.exports = extractors;
方案说明
- 自动适配新增文件:以后在
extractors文件夹里新增.js文件,不需要修改index.js,会自动被纳入导出对象 - 键名规则:导出的键名就是文件的名称(比如
Account.js对应Account,Bitmoji.js对应Bitmoji,如果需要和你之前的AccountData一致,只要把文件名改成AccountData.js即可) - ES5完全兼容:全程使用CommonJS语法,没有用到任何ES6+特性,符合你的环境要求
- 过滤规则:默认跳过
index.js和非.js文件,如果有需要排除的其他文件,可以在if条件里添加额外判断(比如if (file === 'index.js' || file === 'temp.js' || ...))
使用方式
和你之前的用法完全一致,解构导入时直接用文件名对应的键即可:
const { Account, Bitmoji, Example } = require('./extractors'); // 调用函数 Account(data);
这样就彻底解决了手动维护导入导出的繁琐问题,新增模块时只需要添加文件即可。
内容的提问来源于stack exchange,提问作者Iserila
相关产品推荐
相关产品推荐

