node js中的静态文件Path调用

Static file Path call in node js

我已经创建了一个服务器端应用程序,可以检索该目录中的 index.html 文件。

代码如下,

const http = require('http')
const fs = require('fs')

const port = process.env.PORT || 1337;

const server = http.createServer(function (req, res){
    if(req.url.match(/^\/static/))
        return respondStatic(req,res)

    return respondNotFound(req,res)
});

server.listen(port)

function respondStatic(req,res){
    const filename = `${__dirname}/public${req.url.split('/static')[1]}`
    fs.createReadStream(filename)
        .on('error',()=> respondNotFound(req,res))
        .pipe(res)

    console.log(req.url);
}

然后运行 程序并给浏览器如下URL。 http://localhost:1337/static/index.html

当我看到终端后,我看到下面的代码行 console.log(req.url); 为我提供了 3 个输出,如下所示。

/static/index.html
/static/tachyons.min.css
/static/ember.jpg

在那个目录下,有5个文件。

chat.css
chat.html
chat.js
ember.jpg
index.html
tachyons.min.css

ember.jpg 和 tachyons.min.css 用于 index.html。

问题是:

Although I gave index.html as static file Why other 2 file( which is /static/tachyons.min.css & /static/ember.jpg prints as req.url in console?

该代码不 index.html 作为静态文件提供服务,它提供该目录中被请求的任何文件。正如你在这里暗示的那样:

ember.jpg and tachyons.min.css are using for index.html

因此,如果 index.html 引用了另外两个文件,那么当您在浏览器中请求 index.html 时,您也会请求另外两个文件。当代码为这些请求提供服务时,它会在此处记录到控制台:

console.log(req.url);