一个非常简单的问题,但困扰了我很多。
以下两种情况有什么区别?
index.html
- script src="script/a.js"
- script src="/script/a.js" // starting with slash
以及为什么我的服务器可以提供此请求(以斜杠开头)
app.get('/script/a.js', function(req, res){ // with slash
res.sendfile(__dirname + '/realfolder/script/a.js');
});
无论客户端的url src是我提到的那两个案例的任何情况吗?
另一方面,如果我以下列方式提供请求,我总是遇到404错误(没有斜线开始)
app.get('script/a.js', function(req, res){ // without slash
res.sendfile(__dirname + '/realfolder/script/a.js');
});
在我看来,路径从'/'开始表示应用程序的根文件夹,另一个表示来自__dirname的相对路径。我无法理解为什么我的服务器无法处理 app.get('script / a.js')这个在开头没有斜线的请求?
有什么不对吗?
答案 0 :(得分:3)
当路径以斜杠/
开头时,表示它是绝对路径。
当它不以斜杠开头时,它是一个相对路径。
让我们看一个例子。想象一下,我的硬盘只有以下文件夹:
main
subfolder1
subfolder2
lastfolder
现在假设我们在文件夹subfolder2
中,我们想要加载lastfolder
内的文件。我们可以使用相对路径加载它:
lastfolder/file.txt
但我们也可以使用绝对路径:
/main/subfolder2/lastfolder/file.txt
两条路径都是正确的,但是如果我们移动到另一个文件夹(例如,如果我们在subfolder1
中),相对的路径可能会失败,而绝对路径将始终是正确的(如果我们不修改当然是文件夹。)