2014-10-04 90 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