簡體   English   中英

Node.js從多個文件組合模塊/導出

[英]Node.js Combine module/exports from multiple files

我希望將一個大型配置.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));

你可以這樣做

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

您可以使用擴展運算符...或者如果它不起作用Object.assign

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

要么:

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

如果您的NodeJ允許spread (...)運算符在此處檢查) ,您可以執行以下操作:

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

您可以創建一個子文件夾來自動分配函數和其他對象。

mymodule.js

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

module.exports = {};

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

插件/ mymodule.myfunction.js

module.exports = {

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

};

index.js

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

mymodule.myfunction();
// It works!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM