如何在没有快递的情况下提供多个文件

时间:2018-04-22 15:23:48

标签: node.js

我发现的教程使用了express,但如果没有它,我该怎么办呢?

这是我的createServer()

http.createServer((req, res) => {
    fs.readFile('./public/styles/style.css', (err, content) => {
        res.writeHead(200, {'Content-type':'text/css'});
        res.end(content);
    });
    fs.readFile('./public/index.html', (err, content) => {
        res.writeHead(200, {'Content-type':'text/html'});
        res.end(content);
    });
}).listen(port);

有时这很有效。但是,在某些重新加载中,它只显示纯文本样式表或样式表不会加载。

2 个答案:

答案 0 :(得分:2)

您的示例代码将两个文件提供给访问它的任何浏览器。您没有任何逻辑可以查看请求并找出浏览器需要的文件。

此外,这是一场比赛。无论readFile操作首先完成,都可以首先传递其文件。

因此,你的结果的不可预测性来自那场比赛。

建议:在浏览器中使用View Source...

答案 1 :(得分:1)

你可能只有一个if来检查传入请求的来源

http.createServer((req, res) => {

    if ( req.url == 'index.html' )
        ...

    if ( req.url == 'style.css' )
       ...

Express路由器只是比它更聪明的东西 - 但它还必须检查哪条路由与传入请求匹配。