我已经通过要求如下定义了http服务器:
var http = require('http');
function onRequest(request, response) {
console.log("Request" + request);
console.log("Reponse" + response);
}
http.createServer(onRequest).listen(8080);
我想将http对象传递给JS类(在单独的文件中),我在其中加载特定于我的应用程序的外部模块。
关于我该如何做的任何建议?
谢谢, 标记
答案 0 :(得分:13)
您不需要传递http对象,因为您可以在其他模块中再次要求它。 Node.js将从缓存中返回相同的对象。
如果需要将对象实例传递给模块,一个有点危险的选择是将其定义为全局(没有var关键字)。它将在其他模块中可见。
更安全的选择是定义像这样的模块
// somelib.js
module.exports = function( arg ) {
return {
myfunc: function() { console.log(arg); }
}
};
并像这样导入
var arg = 'Hello'
var somelib = require('./somelib')( arg );
somelib.myfunc() // outputs 'Hello'.
答案 1 :(得分:6)
是的,看看如何制作模块:http://nodejs.org/docs/v0.4.12/api/modules.html
每个模块都有一个名为exports
的特殊对象,当其他模块包含它时,它将被导出。
例如,假设您的示例代码名为app.js
,您将行exports.http = http
添加到同一文件夹中的另一个javascript文件中,并将其包含在var app = require("./app.js")
中,您可以拥有使用app.http
访问http。