2014-10-04 85 views
3

我有兩個模塊:通話功能

var client = require('./handlers/client.js'); 
var server = require('./handlers/server.js'); 

server.createClient() 

client.js

var client = function(){ 
    console.log("New client"); 
} 

exports = module.exports = client; 

server.js

var server = { 
    createClient: function() { 
     var newClient = new client(); 
    } 
} 

    exports = module.exports = server; 

這樣做,服務器模塊說客戶端功能是未定義的。

我該如何得到這個工作?

回答

2

如果你想打電話client()在server.js,你將不得不加入這一行:

var client = require('./client.js'); 

在server.js文件中,以便client被定義在那裏,所以在服務器的整個序列。 JS是這樣的:

var client = require('./client.js'); 
var server = { 
    createClient: function() { 
     var newClient = new client(); 
    } 
} 

exports = module.exports = server; 

你必須require()每個模塊中使用的每一個模塊。


該模塊結構意味着每個模塊獨立。這意味着每個模塊都有自己獨立的名稱空間,並且默認情況下您不能訪問其他模塊的名稱空間。因此,當您需要訪問另一個模塊中的任何內容時,您必須使用require()才能訪問其名稱空間,或者必須調用另一個模塊(您有required())的功能並通過該模塊訪問。

+0

難道只有需要主文件內的模塊嗎? – 2014-10-04 16:44:41

+0

@AfonsoMatos - 不,每個模塊都是獨立存在的,所以每個模塊必須包含所有需要的東西,或者明確地從其他需要的模塊中請求它們。每個模塊創建它自己的獨立命名空間,因此您無需訪問其他模塊的命名空間,而無需執行某些特定操作。 – jfriend00 2014-10-04 16:45:59