2017-07-08 78 views
0
MyApp 
├── main.js 
└── modules 
    ├── a.js 
    ├── b.js 
    ├── c.js 
    ├── d.js 
    ├── e.js 

在我的NodeJS应用程序中,我怎样才能一次性将所有自定义模块(a,b,c,d,e)导入到我的main.js文件中?一次从一个目录导入所有模块[NODE]

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

回答

0

modules/文件夹中创建一个index.js

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 

另外,您可以遍历目录和动态导入每个模块。

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))); 
1

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

const fs = require('fs'); 
 

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

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提示:如果你想要求()相同的d在多个地方的irectory,你可以在目录本身做到这一点!只是要具有以下的index.js文件:如果你想

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

在模块使用包:

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