我处理HTML5时是否必须在node.js中包含res.writeHead?

Bla*_*ard 4 javascript browser html5 css3 node.js

我已经开始学习HTML5/CSS3/JavaScript/Node.js,并且没有HTML4经验,更不用说Web应用程序了.所以这可能是一个愚蠢的问题,但无论如何我在网上寻找时都无法找到答案,因为我在Web和书籍上阅读的所有例子都被认为是用HTML4编写的,所以我'我现在在这里.

在Node.js中,当您向客户端发送响应头时,您将编写以下示例代码:

var http = require('http');
http.createServer(function(req, res){
    res.writeHead(200, {'Content-Type':'text/html'});
    res.write(some_data);
    res.end();
});
Run Code Online (Sandbox Code Playgroud)

但是,在HTML5中,您不需要编写标题{'Content-Type':'text/html'},对吧?那么我可以删除res.writeHead节点应用程序文件中的一行吗?我知道有些浏览器仍然不支持HTML5,但如果可行,那么我想让我的代码仅适用于HTML5/CSS3.

此外,当我完成创建Web应用程序并发布它时,我应该在处理仍然不支持HTML5/CSS3的浏览器时使用哪条路径(例如,旧的IE).

1)即使某些内容崩溃并且看起来很糟糕,仍然会发布它

2)由于安全角度完全阻止使用浏览器的用户并提示他们使用其他浏览器,如果可行(我不知道,但我怀疑我可以访问客户端的浏览器信息并相应地处理它)使用JavaScript ......对吧?)

我不想费心使我的代码适合所有浏览器,因为我希望将其作为业余爱好发布,并使用HTML5/CSS3构建一个好看的网站,花费尽可能少的时间.

谢谢.

Spu*_*ley 6

content-type:text/html 用于浏览器识别页面的HTML需要.的content-type不是HTML5(或HTML4)规范的一部分; 它是HTTP标头的一部分; 它告诉浏览器接收什么样的内容.

如果您提供了错误的内容类型,则浏览器可能无法显示您的页面,或者可能只是将其收到的内容显示为原始文本.内容类型是HTTP协议的必需部分.

如果您需要证明,这里是GitHub上的一个页面,它 HTML代码,但是它提供了非HTML内容类型.如您所见,浏览器将其显示为纯文本.

默认情况下,某些Web服务器可能会为HTML页面发送正确的mime类型,具体取决于服务器配置(通常这是基于查看文件扩展名的服务器来确定要发送的内容类型,但这取决于服务器配置).

但是,如果服务器没有配置为发送正确的MIME类型为您的网页,那么,你需要自己动手在你的代码.浏览器不够聪明,不能为自己解决问题.

您还需要content-type为CSS,JS,JSON,图像文件等提供适当的标题.再次,如果这些标题作为具有可识别文件扩展名的静态文件提供,则可能是默认服务器配置将发送正确的内容键入而不需要考虑它.但是,如果您正在编写一个动态创建这些文件的程序,那么您很可能需要将内容类型正确设置为程序的一部分,以便浏览器理解它们并正确显示它们.