Node.js 在使用';utf-8';是否正确渲染静态文件?

Node.js 在使用';utf-8';是否正确渲染静态文件?,node.js,mime-types,Node.js,Mime Types,在我的节点路由器中,我有一些静态文件的代码。我想知道在简单地指定utf-8时,更加具体地使用mimeType是否有什么好处 module.exports=功能路由器(req,res){ 如果(req.url=='/messages'&&req.method==='GET'){ res.writeHead(200,{'Content-Type':'application/json'}); res.end(JSON.stringify(db.msgs)); }else if(req.url==='

在我的节点路由器中,我有一些静态文件的代码。我想知道在简单地指定utf-8时,更加具体地使用mimeType是否有什么好处

module.exports=功能路由器(req,res){
如果(req.url=='/messages'&&req.method==='GET'){
res.writeHead(200,{'Content-Type':'application/json'});
res.end(JSON.stringify(db.msgs));
}else if(req.url==='/messages'&&req.method===='POST'){
db.msgs.push(req.body);//req.body已经是JSON了
res.end();
}否则{
//静态文件的catchall
如果(req.url=='/')req.url='/index.html';
如果(请求url.indexOf('.')!=-1){
const filePath=clientPath+req.url;
fs.readFile(文件路径,(错误,数据)=>{
如果(错误){
res.statusCode=500;
res.end();
}否则{
让ext;
//所有文件类型都可以编码为utf-8,但如果您希望更明确,可以使用mimeTypes。。。
if(req.url.match(/js/)ext='application/javascript';
if(req.url.match(/css/)ext='text/css';
if(req.url.match(/html/)ext='text/html';
如果(!ext)ext='utf-8';
res.end(数据,分机);
}
});
}否则{
res.statusCode=404;
res.end();
}
}

};这里的问题是,MIME类型对于
res.end
是无效的参数,因此无论如何,它在所有情况下都默认为
utf-8

发送MIME类型的正确方法是HTTP头

MIME类型与编码相比没有任何好处,它们是独立的:

编码确定如何将编辑器中显示的文本转换为发送到客户端的二进制表示形式

MIME类型告诉客户机如何解释解码的文本数据,即是作为JavaScript还是CSS使用

HTML文件的
内容类型
标题通常如下所示:

Content-Type: text/html; charset=utf-8

在许多情况下,MIME类型只是一个方便的助手,可以帮助客户机在尝试猜测数据时获得安全。例如,对于文本内容,您可以迭代多个解析器,看看哪一个可以工作,但使用指定的MIME类型,您知道要使用哪一个