即使呈现了所有内容,浏览器也会尝试加载

时间:2015-12-03 08:09:30

标签: javascript node.js

我在节点js中编写代码来渲染html文件。但是,浏览器仍会尝试加载文件,即使它已完全呈现。

var http = require('http');
var fs = require('fs');

var reqHandler = function (req, res) {

 if (req.url == "/") {
        res.writeHead(200, { 'Content-Type': 'text/html' });
        fs.createReadStream('index.html').pipe(res);
    }
};

http.createServer(reqHandler).listen(3000);

以上代码有什么问题?

我想我遇到了问题,但不知道如何解决这个问题。 index.html文件包含一个javascript文件。当我评论脚本标记时,浏览器正确加载了html文件。但是当包含脚本标记时,浏览器会被卡住。我认为浏览器需要javascript文件。如何发送javascript文件?

1 个答案:

答案 0 :(得分:2)

您还需要处理JS文件的请求,以及任何其他"意外的"请求(如大多数浏览器会在引擎盖下请求的/favicon.ico)发送回404(" Not Found" ):

var reqHandler = function (req, res) {
  if (req.url === '/') {
    res.writeHead(200, { 'Content-Type': 'text/html' });
    fs.createReadStream('index.html').pipe(res);
  } else if (req.url === '/script.js') {
    res.writeHead(200, { 'Content-Type': 'text/javascript' });
    fs.createReadStream('script.js').pipe(res);
  } else {
    res.writeHead(404);
    res.end();
  }
};

显然,如果您想添加更多文件,这将变得相当繁琐,因此node-staticserve-static或甚至像Express这样的模块可能会很有用。