我想只使用节点(没有额外的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