2011-10-26 42 views
4

我已經通過要求所定義的http服務器的其他文件如下:節點JS - 通過引用傳遞Javascript對象到

var http = require('http'); 

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

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

我想通過HTTP對象到一個JS類(在一個單獨的文件)在那裏加載特定於我的應用程序的外部模塊。

關於我該怎麼做的任何建議?

謝謝, 馬克

回答

6

是的,來看看如何讓模塊:http://nodejs.org/docs/v0.4.12/api/modules.html

每個模塊都有一個特殊的對象稱爲exports當其他模塊包括它將會被導出。

例如,假設您的示例代碼被稱爲app.js,您添加行exports.http = http,並在同一個文件夾中其他JavaScript文件,包括它var app = require("./app.js"),你可以訪問HTTP與app.http

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'.