那麼,對於那些相當不熟悉的人來說,這裏是使用Express顯示大多數常見文件類型而不使用的一種方法。
var file_path = "";
var mimes = {
'css': 'text/css',
'js': 'text/javascript',
'htm': 'text/html',
'html': 'text/html',
'png': 'image/png',
'jpg': 'image/jpg',
'jpeg': 'image/jpeg'
};
// parses the url request for a file and pulls the pathname
var url_request = url.parse(request.url).pathname;
// finds the placement of '.' to determine the extension
var tmp = url_request.lastIndexOf(".");
// determines the extension by uing .substring that takes everything after '.'
var extension = url_request.substring((tmp + 1));
//set path of static pages
if (extension === 'css' || extension === 'js' || extension === 'htm' || extension === 'html' || extension === 'png' || extension === 'jpg' || extension === 'jpeg'){
file_path = url_request.replace("/", "");
}
//load needed pages and static files
fs.readFile(file_path, function (error, data){
if(error){
response.writeHeader(500, {"Content-Type": "text/html"});
response.write("<h1>FS READ FILE ERROR: Internal Server Error!</h1>");
}
else{
response.writeHeader(200, {"Content-Type": mimes[extension]});
response.write(data);
}
response.end();
});
我想知道更簡潔的方式做到這一點,而不使用Express。
你的問題是完全無法回答的,因爲這與Node.js完全沒有關係,並且與你在Node.js上使用的任何框架處理HTTP請求有關。你在用什麼?表現?你自己的代碼?我也不清楚問題是什麼。 – Brad
我現在沒有使用Express。在進一步觀察它之後,這是我的理論:當我做'fs.readFile'並閱讀index.html時,它會通過並通知我的CSS或JS文件的鏈接。然後它讀取這些文件,並且由於「Content-Type:」設置爲「text/html」,它不會正確讀取這些文件。因此不顯示它。它必須是'text/css'什麼的。 – JDillon522
你一定要添加一個[SSCCE](http://sscce.org) – Zeta