3

一个非常简单的问题,但让我很困扰。

以下两种情况有什么区别?

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')这个开头没有斜线的请求?

哪里不对了 ?

4

1 回答 1

3

当路径以斜杠开头时,/表示它是绝对路径。当它不以斜杠开头时,它是一个相对路径。

让我们看一个例子。想象一下,我的硬盘只有以下文件夹:

main
    subfolder1
    subfolder2
        lastfolder

现在假设我们在文件夹中subfolder2,我们想要加载一个位于lastfolder. 我们可以使用相对路径加载它:

lastfolder/file.txt

但我们也可以使用绝对路径:

/main/subfolder2/lastfolder/file.txt

两个路径都是正确的,但是如果我们移动到不同的文件夹(例如,如果我们在 中subfolder1),相对路径可能会失败,而绝对路径将始终正确(当然,如果我们不修改文件夹)。

于 2013-02-20T08:10:04.600 回答