Node JS - 通过引用传递Javascript对象到其他文件

时间:2011-10-26 15:50:36

标签: javascript node.js

我已经通过要求如下定义了http服务器:

var http = require('http');

function onRequest(request, response) {
    console.log("Request" + request);
    console.log("Reponse" + response);
}

http.createServer(onRequest).listen(8080);

我想将http对象传递给JS类(在单独的文件中),我在其中加载特定于我的应用程序的外部模块。

关于我该如何做的任何建议?

谢谢, 标记

2 个答案:

答案 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。

相关问题