我想只使用節點(沒有額外的npms或快遞)。這是我目前的路由處理:服務靜態文件節點
function requestHandler(req, res) {
var localFolder = __dirname + '/views/',
page404 = localFolder + '404.html',
fileToServe = "";
if(/\/posts\/\d+/.test(req.url)){
fileToServe = __dirname + req.url.match(/\/posts\/\d+/) +'.json';
fs.stat(fileToServe, function(err, contents){
if(!err && contents){
res.end(templateEngine('post',fileToServe));
} else {
res.end(templateEngine('error', err))
}
});
} else if (/\/posts\//.test(req.url)){
} else if (/.+[^\W]$/.test(req.url)){
fileToServe = __dirname + '/views' + req.url.match(/\/.+[^\W]$/gi);
fs.stat(fileToServe, function(err, contents){
if(!err && contents){
res.end(fs.readFileSync(fileToServe));
} else {
res.end(templateEngine('error', err))
}
});
}
}
我有兩個問題:
在我的意見之一,如果有一個<link>
標籤與CSS文件。當我直接進入路徑時,它被提供(這是正則表達式:/.+[^\W]$/.test(req.url))
。但是,如前所述,從模板引擎構建的一個視圖使用css文件。
瀏覽器如何工作當它看到鏈接標記?它是否發送一個GET請求到我的本地服務器(節點)?如果是這樣,爲什麼我的服務器沒有發送迴應?當我直接進入鏈接時,它會發送完美的響應
此外,當我嘗試去鏈接標籤中使用css文件的頁面時,它只是掛在一個空白頁面上,當我殺死服務器時,它說它從來沒有收到響應(再一次,當我直接去鏈接,我得到正確的文件)。
我必須重新組織我的路線嗎?分別提供靜態文件?
它是否使用正確的內容類型發送響應? –
當我直接打它它。當我轉到在鏈接標籤中使用它的頁面時,「GET」請求只是「掛起」,如果我得到了回覆,我會認爲它是正確的內容類型。 – HelloWorld