MyApp
├── main.js
└── modules
├── a.js
├── b.js
├── c.js
├── d.js
├── e.js
В моем приложении NodeJS, как я могу импортировать все мои собственные модули (a, b, c, d, e) в мой файл main.js сразу?
У меня длинный список модулей, и я не хочу импортировать их отдельно.
Вы можете динамически импортировать каждый модуль.
const fs = require('fs');
fs
.readdirSync('${__dirname}/modules')
.filter(file => (file.slice(-3) === '.js'))
.forEach((file) => {
require('./modules/${file}')
});
Создайте 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
В качестве альтернативы вы можете прокручивать каталог и динамически импортировать каждый модуль.
const path = require('path');
const fs = require('fs');
const modulesPath = './modules';
const modulesList = fs.readdirSync(modulesPath);
modulesList.forEach(modulePath => require(path.resolve(modulesPath, modulePath)));
Вы можете использовать ручной способ импорта всех модулей в каталог
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 a tip: Если вы хотите потребовать() один и тот же каталог в нескольких местах, вы можете сделать это в самой директории! Просто создайте файл index.js со следующим:
module.exports = require('require-dir')(); // defaults to '.'
Где вы хотите использовать пакет в модулях:
var mds = require('./modules');
// mds.a(params) .....