絕對路徑與相對路徑的原理
本文先記錄了絕對路徑與相對路徑分別長什么樣,然后是演示示例的文件結構和相對路徑的表示方法,最后是演示示例。
1.絕對路徑與相對路徑
像/public/image.jpg
這樣以"/"
開頭的路徑是絕對路徑,像./public/image.jpg
、../public/image.jpg
、../../public/image.jpg
這樣分別以'./'
、'../'
和'../../'
開頭,或者像public/image.jpg
這樣開頭什么也不加的路徑是相對路徑。
假設有如下幾個文件:
- public/Dir1/SubDir1/Ref1.html
- public/Dir1/SubDir2/Ref2.html
- public/Dir2/SubDir3/Ref3.html
- public/Dir2/SubDir4/Ref4.html
- public/Dir2/SubDir4/SubDir5/Ref5.html
- public/Dir2/Ref6.html
他們有的路徑層次較多,有的路徑層次較淺,這時我選一個public/Dir2/SubDir4/Ref4.html
這個路徑層次處于中間位置比較特殊的文件作為研究對象,來探究絕對路徑與相對路徑的表示方法。
2.文件層次結構如圖:
3.幾種相對路徑表示方法
- 路徑開頭什么也沒有表示同級文件或目錄(我的rails項目中是這樣的)。
-
.
或./
表示當前目錄。 -
..
或'../'
表示上一級目錄。 - 以此類推,
../../
表示上上級目錄。
4.絕對路徑與相對路徑實例演示
4.1相對路徑的計算要先找到目標的父目錄,然后從其父目錄向下找到目標文件或文件夾,表示的時候運用上述幾種相對路徑的表示方法,我的項目是rails項目:
本起始頁是:public/Dir2/SubDir4/Ref4.html
- 到達跟它同一目錄的
public/Dir2/SubDir4/Ref7.html
(路徑開頭什么也沒有表示同級文件或目錄):
<a href="Ref7.html">"Ref7.html"</a>
它到達 http://localhost:3000/Dir2/SubDir4/Ref7.html - 到達它同級文件
public/Dir2/SubDir4/SubDir5
的下一級目錄中文件public/Dir2/SubDir4/SubDir5/Ref5.html
(路徑開頭什么也沒有表示同級文件或目錄SubDir5
,然后補全具體路徑/Ref5.html
,最后路徑如下):
<a href="SubDir5/Ref5.html">"SubDir5/Ref5.html"</a>
它到達 http://localhost:3000/Dir2/SubDir4/SubDir5/Ref5.html in my project - 到達它父級文件的同級文件
public/Dir2/Ref6.html
('../'
表示上一級目錄/Dir2
),這需要越過當前路徑SubDir4
向上一級../
到達/Dir2
,然后向下到達Ref6.html
:
<a href="../Ref6.html">"../Ref6.html"</a>
它到達 http://localhost:3000/Dir2/Ref6.html - 到達文件
public/Dir1/SubDir1/Ref1.html
,這需要越過當前路徑SubDir4
向上兩級../..
到達public
,然后向下兩級到達到達public/Dir1/SubDir1
,最后尋找Ref1.html
<a href="../../Dir1/SubDir1/Ref1.html">"../../Dir1/SubDir1/Ref1.html"</a>
它到達 http://localhost:3000/Dir1/SubDir1/Ref1.html - 同理到達public/Dir1/SubDir2/Ref2.html:
<a href="../../Dir1/SubDir2/Ref2.html">"../../Dir1/SubDir2/Ref2.html"</a>
它到達 http://localhost:3000/Dir1/SubDir2/Ref2.html - 如果到達public/Dir2/SubDir3/Ref3.html,這需要越過當前路徑
SubDir4
,向上一級../
到達Dir2
,然后向下到達/Dir2/SubDir3
,尋找Ref3.html
<a href="../SubDir3/Ref3.html">"../SubDir3/Ref3.html"</a>
它到達 http://localhost:3000/Dir2/SubDir3/Ref3.html
4.2絕對路徑的計算從路徑開頭的'/'符號開始直至到達目標位置,示例如下:
本起始頁是:public/Dir2/SubDir4/Ref4.html
- 比如要到達public/Dir2/SubDir4/SubDir5/Ref5.html,直接從
/Dir2
開始一路向下寫全路徑:
<a href="/Dir2/SubDir4/SubDir5/Ref5.html">"/Dir2/SubDir4/SubDir5/Ref5.html"</a>
--it lead to http://localhost:3000/Dir2/SubDir4/SubDir5/Ref5.html
5總結:
- 絕對路徑是指目錄下的絕對位置,直接到達目標位置,windows系統(tǒng)中通常是從盤符開始的路徑,Linux和Mac中通常從家目錄開始,完整的描述文件位置的路徑就是絕對路徑。如果在網站上,是以web站點根目錄如
localhost:3000
為參考基礎的目錄路徑。 - 相對路徑就是指從這個文件所在的路徑開始計算的跟其它文件(或文件夾)的路徑關系。