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

Mar*_*yen 4 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);
Run Code Online (Sandbox Code Playgroud)

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

有关如何做到这一点的任何建议?

谢谢,马克

Tee*_*nen 13

您不需要传递http对象,因为您可以在其他模块中再次要求它.Node.js将从缓存中返回相同的对象.

如果需要将对象实例传递给模块,一个有点危险的选择是将其定义为全局(没有var关键字).它将在其他模块中可见.

更安全的替代方案是定义这样的模块

// somelib.js
module.exports = function( arg ) { 
   return {
      myfunc: function() { console.log(arg); }
   }
};
Run Code Online (Sandbox Code Playgroud)

并像这样导入它

var arg = 'Hello'
var somelib = require('./somelib')( arg );
somelib.myfunc() // outputs 'Hello'.
Run Code Online (Sandbox Code Playgroud)


Nic*_*can 6

是的,看看如何制作模块:http://nodejs.org/docs/v0.4.12/api/modules.html

每个模块都有一个特殊的对象exports,当其他模块包含它时将被导出.

例如,假设您的示例代码被调用app.js,您添加该行exports.http = http并在同一文件夹中的另一个javascript文件中包含它var app = require("./app.js"),并且您可以访问http with app.http.