遍历文件夹并导入index.js

时间:2019-09-27 11:52:42

标签: javascript node.js reactjs create-react-app

我已经创建了react应用程序代码库,在该库中,我希望能够遍历嵌套的数据结构以导入一个特定文件。

我具有以下结构:

root.js
-modules
-- mod1
--- index.js 
-- mod2
--- index.js 

root.js中,我想遍历模块中的每个模块以导入index.js,以便初始化数据将在应用程序的开始处运行。对我来说,尚不清楚最好的方法是最好的方法,如果有解决方案,最好不使用任何插件。

2 个答案:

答案 0 :(得分:0)

我认为,您应该“手动”添加它们

// 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))

一个相关建议:Get all files recursively in directories NodejS

答案 1 :(得分:0)

结果很简单:

导出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文件中。