Node.js从多个文件组合模块/导出

rji*_*ski 12 javascript module node.js

我希望将一个大型配置.js文件拆分成多个较小的文件,但仍然将它们组合到同一个模块中.这是常见做法,最佳方法是什么,以便在添加新文件时模块不需要扩展.

添加新文件时的示例,例如但不需要更新math.js.

math - add.js - subtract.js - math.js

// add.js
module.exports = function(v1, v2) {
    return v1 + v2;
}

// subtract.js
module.exports = function(v1, v2) {
    return v1 - v2;
}

// math.js
var add = require('./add');
exports.add = add;

var subtract = require('./subtract');
exports.subtract = subtract;

// app.js
var math = require('./math');
console.log('add = ' + math.add(5,5));
console.log('subtract =' + math.subtract(5,5));
Run Code Online (Sandbox Code Playgroud)

Kev*_*ton 8

您可以使用扩展运算符,...或者如果它不起作用Object.assign

module.exports = {
   ...require('./some-library'),
};
Run Code Online (Sandbox Code Playgroud)

或者:

Object.assign(module.exports, require('./some-library'));
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您的 NodeJs 允许spread (...) 运算符(请在此处查看,您可以执行以下操作:

    module.exports = {
        ...require('./src/add'),
        ...require('./src/subtract')
    }
Run Code Online (Sandbox Code Playgroud)


ker*_*los 2

你可以这样做

// math.js 
module.exports = function (func){
    return require('./'+func);
}

//use it like this 
// app.js

var math = require('./math');
console.log('add = ' + math('add')(5,5));
console.log('subtract =' + math('subtract')(5,5));
Run Code Online (Sandbox Code Playgroud)