Javascript Node.js公共静态文件夹,用于为js提供utf-8字符集
我使用node.js和express将静态JavaScript文件提供给一个单页应用程序。 在node.js服务器代码中,我使用express.static允许公共访问文件夹Javascript Node.js公共静态文件夹,用于为js提供utf-8字符集,javascript,jquery,node.js,utf-8,express,Javascript,Jquery,Node.js,Utf 8,Express,我使用node.js和express将静态JavaScript文件提供给一个单页应用程序。 在node.js服务器代码中,我使用express.static允许公共访问文件夹 app.use(express.static(__dirname + '/public/')); 在客户端,我使用$.getScript获取存储在公用文件夹中的JavaScript文件,例如: $.getScript("js/init.js"); 当我尝试获取一些带有重音符号的字母或一些UTF-8特殊字符的JavaSc
app.use(express.static(__dirname + '/public/'));
在客户端,我使用$.getScript
获取存储在公用文件夹中的JavaScript文件,例如:
$.getScript("js/init.js");
当我尝试获取一些带有重音符号的字母或一些UTF-8特殊字符的JavaScript文件时,我得到的是奇怪的字符,而不是我想要的字符
当我定义公用文件夹时,有没有办法设置字符集?在html页面中,必须使用与资源文件相同的编码(或者相反的方式) 确保在head部分设置了meta标记:
<meta charset='utf-8'></meta>
的一个回答给了我一个提示,在静态之前插入您自己的中间件
下面的代码查找*.js
文件并将字符集设置为utf-8
app.use(function(req, res, next) {
if (/.*\.js/.test(req.path)) {
res.charset = "utf-8";
}
next();
});
app.use(express.static(__dirname + '/public/'));
完成此操作后,查找以下响应标题
Content-Type: application/javascript; charset=utf-8
你确定你的init.js文件是用utf8保存的吗?还是没有字符?:)这是一个很好的答案;当使用
superagent
测试从Express静态服务器检索到的.JS文件文本时,这实际上节省了我的时间,因为superagent
没有返回文件文本,除非它使用UTF-8编码。您还可以使用Node.JSpath
库获得更具表现力的条件<代码>变量路径=要求(“路径”);if(path.extname(req.path)=='.js'){//it's js}