我是Node.js的新手,我很难理解这一点。 Node如何知道这两个参数是对象?他们来自哪里?它们是由Node本身提供的吗?
答案 0 :(得分:1)
createServer()
是一个需要一个参数的函数-回调函数。它采用您提供的回调函数(在本例中为匿名函数),将其存储在某个地方并在每次新请求到来时调用它。本机代码解析对javascript对象request
的请求,并将其与对象response
(用于处理请求的回调函数的集合)一起传递给回调函数。不是节点,而是您应该知道节点用两个参数回叫您使事情发生的人。
答案 1 :(得分:0)
查看文档:
https://nodejs.org/api/http.html#http_http_createserver_options_requestlistener
https://www.w3schools.com/nodejs/nodejs_http.asp
https://www.w3schools.com/nodejs/met_http_createserver.asp
https://www.w3schools.com/nodejs/func_http_requestlistener.asp
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello World!');
res.end();
}).listen(8080);
答案 2 :(得分:0)
每当您通过require()
之类的方法在Node.js中使用一个库时,实际上是从该库中导入所有代码,执行该代码,并且通常获得的返回值等于该模块的最终{{ 1}}变量。因此,当您从库中调用函数时,该函数是在库中定义的,包括有关如何决定调用传递给它的回调的定义。名称“ req”和“ res”可以是任何名称-您可以将它们称为“ John”和“ Amy”(但为了清楚起见,请不要使用)-但是第一个参数始终是请求对象,第二个参数始终是请求对象将始终是响应对象。因为这是库在调用回调时传递它们的顺序。
大多数框架都坚持使用module.exports
参数结构,只是因为捆绑的HTTP库就是这样做的。它们不是必须的,但是当每个人都保持一致时总是很好,因此您可以轻松地猜测如何使用新的库:)