我创建了 react 应用程序代码库,我希望能够在其中迭代嵌套的数据结构以导入一个特定文件。
我有以下结构:
root.js
-modules
-- mod1
--- index.js
-- mod2
--- index.js
在root.js
中,我想检查模块中的每个模块以导入index.js
以便初始化数据将在应用程序开始时运行。如果有解决方案,我不清楚最好不使用任何插件的最佳方法是什么。
在我看来,您应该"手动"包含它们
// root.js
require('mod1.index')
require('mod2.index')
// ...
它更加清晰和直接。除非你有100+模块
动态导入的编辑:
无依赖提案(https://gist.github.com/kethinov/6658166#gistcomment-1603591 的变体(
'use strict'
const fs = require('fs')
const walkSync = function (dir, filelist) {
const files = fs.readdirSync(dir)
filelist = filelist || []
files.forEach(function (file) {
if (fs.statSync(dir + '/' + file).isDirectory()) {
filelist = walkSync(dir + '/' + file, filelist)
} else {
filelist.push(dir + '/' + file)
}
})
return filelist
}
allFiles = walkSync('./src')
allFiles.filter(f => f.split('/').pop() == 'index.js').forEach(f => require(f))
一个依赖建议:递归获取目录 NodejS 中的所有文件
事实证明这很简单:
导出modules.js
文件中的所有内容。
const req = require.context('./', true, /^./[a-zA-Z0-9]+/index.js$/);
const modules = req.keys().map(req);
module.exports = modules;
然后将modules.js
文件导入某个root.js
文件中。