#javascript #node.js
#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 (в отдельном файле), где я загружаю внешние модули, специфичные для моего приложения.
Любые предложения о том, как мне это сделать?
Спасибо, Марк
Ответ №1:
Вам не нужно передавать 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'.
Ответ №2:
Да, посмотрите, как создавать модули: 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
помощью .