刚开始使用Node.js,我有以下查询:
我的server.js文件中有以下javascript:
=============================================== =====
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
route(handle, pathname, response);
console.log("Request for " + pathname + " received.");
}
var server = http.createServer(onRequest)
server.listen(8888);
console.log("Server started")
=============================================== ================
我有另一个js文件,我想为" listen"注册一个监听器。服务器发出的事件,或者服务器发出的任何事件。
我无法更改原始文件以导出服务器对象。
有什么方法可以实现我的目标吗?
答案 0 :(得分:1)
您希望将服务器对象传递到另一个模块,如下所示,或者您希望在其他模块上公开一个函数,然后您可以将该函数指定为父模块中的侦听器。无论哪种方式都可行。它只取决于您希望.on
调用的位置。
// app.js
var otherModule = require('./other-module.js');
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
route(handle, pathname, response);
console.log("Request for " + pathname + " received.");
}
var server = http.createServer(onRequest);
otherModule.init(server);
server.listen(8888, function () {
console.log("Server started");
}); // <-- Passing in this callback is a shortcut for defining an event listener for the "listen" event.
// other-module.js
exports.init = function (server) {
server.on('listen', function () {
console.log("listen event fired.");
});
};
在上面的示例中,我为listen
事件设置了两个事件侦听器。当我们将回调函数传递给server.listen
时,第一个注册。这只是做server.on('listen', ...)
的捷径。第二个事件处理程序在other-module.js中设置,显然:)