3

非常に単純な質問ですが、とても気になります。

次の 2 つのケースの違いは何ですか?

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に関係なく、私が言及したこれら2つのケースのいずれかですか?

一方、次の方法でリクエストを処理すると、常に 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 に答える