能否解释一下res.write(html)
中html参数如何映射到./index.html
?
这是代码。我不了解回调函数如何工作吗?
var http = require('http');
var fs = require('fs');
var host = 'localhost';
var port = '8888';
fs.readFile('./index.html', function(err, html){
if(err){
console.log(err);
return;
}
var server = http.createServer(function(req, res){
res.StatusCode = 200;
res.setHeader('Content-Type', 'text/html');
res.write(html);
res.end();
});
server.listen(port, host, function(){
console.log('Server running on port ' + port);
})
});
答案 0 :(得分:1)
此代码说运行fs.readFile('./index.html', ...)
来将文件'./index.html'存入内存。将文件读入内存后,请调用传递给它的回调并将内容放入名为html
的函数参数中。在该回调函数中的任何时候,您都可以引用html
函数参数,它将包含从磁盘读取的'./index.html'文件的内容。
然后,创建您的服务器并为其定义一个请求处理程序回调,每次您的Web服务器接收到传入请求时都会调用该回调。
然后,该回调将发送该html
参数中的数据作为对该传入请求的响应。
然后,启动该服务器。
这是一种奇怪的书写方式,但从技术上讲,这没有什么错。
请注意,http.serverServer()
回调嵌套在另一个回调中。在Javascript中,您不仅可以访问自己的局部参数和局部变量,还可以访问嵌套在其中的任何父函数的参数和局部变量。
我不了解回调函数如何工作吗?
我不知道您做什么,也不了解回调函数。在fs.readFile()
和http.createServer()
中,这些都是在将来某些操作完成时调用的回调。在fs.readFile()
中,当文件内容已完全读入内存时,将调用回调。在http.createserver()
情况下,只要Web服务器收到任何传入请求,就会调用回调。