我决定学习节点,我正在关注,首先是The Node Beginner Book。正如在我猜的其他许多资源中,有“简单的HTTP服务器”,第一步,如:
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8888);
据我所知,当有人(在这种情况下我是localhost:8888
)发出请求时,会触发一个事件,并且传递给http.createServer
的匿名函数会被触发。我在这里找到了我已经找到的关于http.createserver
的文档,供那些认为有用的人使用:
http.createServer([requestListener])
返回一个新的Web服务器对象。
requestListener是一个自动添加到'request'事件的函数。
(来自node.js网站)
我无法找到或弄清楚这个触发函数如何通过它传递参数,以及如何找到它。那么......我怎么知道这些参数来自哪里,它们提供了哪些方法等等?
提前致谢!
答案 0 :(得分:2)
在JavaScript中,函数可以作为参数传递给方法。例如:
function funcA(data) {
console.log(data);
}
function funcB(foo) {
foo('I'm function B'); // Call 'foo' and pass a parameter into that function
}
funcB(funcA); // Pass funcA as a parameter into funcB
您正在使用http.createServer
进行上述操作,传递一个可以接受参数的函数。 new server期望您传入可以调用的函数。服务器将执行内部操作,它将创建一个请求和响应对象,然后使用这些变量调用您传入的函数。
了解有关这些参数的详细信息,请阅读Http Event: Request。
答案 1 :(得分:1)
这应该是创建堆栈: https://github.com/joyent/node/blob/master/lib/http.js#L62> https://github.com/joyent/node/blob/master/lib/_http_server.js#L253 因此,如果请求被触发,则应该触发:https://github.com/joyent/node/blob/master/lib/_http_server.js#L502 - 或者可能是:https://github.com/joyent/node/blob/master/lib/_http_server.js#L505
答案 2 :(得分:0)
node.js documentation,解释了您需要了解的关于http.ClientRequest和http.ServerResponse的所有信息,包括方法和事件。
如果您需要一般的HTTP协议信息,可以通过Google搜索找到大量资源,例如HTTP Wikipedia page。
如果您想详细了解如何在节点中实施HTTP,您必须跳转到node.js source code。
此外,您可能对express.js感兴趣,{{3}}是节点最常用的Web框架,因此可以在线获得有关它的大量资源。