NodeJS网址请求,绝对还是相对?

时间:2013-02-20 07:50:00

标签: node.js

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

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

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

有什么不对吗?

1 个答案:

答案 0 :(得分:3)

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

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

main
    subfolder1
    subfolder2
        lastfolder

现在假设我们在文件夹subfolder2中,我们想要加载lastfolder内的文件。我们可以使用相对路径加载它:

lastfolder/file.txt

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

/main/subfolder2/lastfolder/file.txt

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