节点文件系统

时间:2018-09-02 01:57:28

标签: node.js

能否解释一下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);
    })
});

1 个答案:

答案 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服务器收到任何传入请求,就会调用回调。