2017-07-08 76 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) .....