你可以有你的模塊導出將依賴作爲一個功能(而不是要求)。所以你必須:
/*moduleA*/
module.export = function(depB){
/*your code here*/
});
當你導入moduleA
你這樣做:
var moduleB = require('moduleB');
var moduleA = require('moduleA')(moduleB);
另一種方法是將一個依賴關係樹傳遞到子模塊:
const platform = {
moduleA : require('moduleA'),
moduleB : require('moduleB'),
}
var moduleA = platform.moduleA(platform);
而且在moduleA
:
module.export = function(platform){
var moduleB = platform.moduleB; //your dependency here
//for consistency you'd also want to export a function that takes the depdency tree even if it doesnt take a dependency (so module configuration remains consistent across all your modules)
}
以這種方式替換模擬的依賴將會非常容易。關於此主題here和here有更多。
感謝您的建議,在我的項目中,一個文件實際上需要大量的依賴關係,因此需要moduleA將變成require('moduleA')(moduleB,moduleC,moduleD,moduleE ...),這是一種笨拙的我的情況。 – Hao
然後我推薦第二種方法,它放在我放的最後一個鏈接上。我會舉一個例子。 – MinusFour
這看起來非常棒,謝謝! – Hao