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

时间:2014-05-09 11:36:28

标签: javascript node.js module

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

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

数学   - 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));

4 个答案:

答案 0 :(得分:2)

你可以这样做

//Called when a RINGING response is received for the INVITE request sent.
public override void OnRingingBack(SipAudioCall call)
{
     base.OnRingingBack(call); 
}

答案 1 :(得分:2)

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

module.exports = {
   ...require('./some-library'),
};

或者:

Object.assign(module.exports, require('./some-library'));

答案 2 :(得分:1)

如果您的NodeJ允许spread(...)运算符(选中here,您可以执行以下操作:

    module.exports = {
        ...require('./src/add'),
        ...require('./src/subtract')
    }

答案 3 :(得分:0)

您可以创建一个子文件夹来自动分配功能和其他对象。

mymodule.js

const pluginDir = __dirname + '/plugins/';
const fs = require('fs');

module.exports = {};

fs.readdirSync(pluginDir).forEach(file => {
    Object.assign(module.exports,require(pluginDir + file));
});

plugins / mymodule.myfunction.js

module.exports = {

    myfunction: function() {
        console.log("It works!");
    }

};

index.js

const mymodule = require('mymodule.js');

mymodule.myfunction();
// It works!