[NODE]一次从目录导入所有模块

时间:2017-07-08 14:55:25

标签: javascript node.js

MyApp
├── main.js
└── modules
    ├── a.js
    ├── b.js
    ├── c.js
    ├── d.js
    ├── e.js

在我的NodeJS应用程序中,如何一次导入main.js文件中的所有自定义模块(a,b,c,d,e)?

我有很长的模块列表,我不想单独导入它们。

4 个答案:

答案 0 :(得分:2)

您可以动态导入每个模块。



const fs = require('fs');

fs
  .readdirSync(`${__dirname}/modules`)
  .filter(file => (file.slice(-3) === '.js'))
  .forEach((file) => {
    require(`./modules/${file}`)
  });




答案 1 :(得分:1)

index.js文件夹中创建modules/

const a = require('./a')
const b = require('./b')
const c = require('./c')
const d = require('./d')
const e = require('./e')

module.exports = {
  a,
  b,
  c,
  d,
  e
}

然后只需导入main.js中的模块:

const modules = require('./modules')
modules.a

或者,您可以遍历目录并动态导入每个模块。

答案 2 :(得分:0)

const path = require('path');
const fs = require('fs');

const modulesPath = './modules';
const modulesList = fs.readdirSync(modulesPath);
modulesList.forEach(modulePath => require(path.resolve(modulesPath, modulePath)));

答案 3 :(得分:0)

您可以使用手动方式导入目录中的所有模块

var allModules = {};
require('fs').readdirSync(__dirname + '/modules/').forEach(function(file) {
  if (file.match(/\.js$/) !== null && file !== 'index.js') {
    var name = file.replace('.js', '');
    allModules[name] = require('./modules/' + file);
  }
});
// allModules.a(params)

或者您可以将此库用于此案例require-dir

var requireDir = require('require-dir');
var modulesPackage = requireDir('./modules');
// modulesPackage contains 
//{
//  a: require("./modules/a"),
//  b: require("./modules/b")
//}

lib hava小贴士:如果你想在多个地方要求()同一个目录,你可以在目录本身中执行此操作!只需使用以下命令创建index.js文件:

module.exports = require('require-dir')();   // defaults to '.'

您想在模块中使用包的位置:

var mds = require('./modules');
// mds.a(params) .....