簡體   English   中英

從兩個絕對路徑構造 JavaScript 中的相對路徑

[英]Construct a relative path in JavaScript from two absolute paths

給定兩條絕對路徑,例如

/var/data/stuff/xyz.html
/var/data

如何創建以第二條路徑為基礎的相對路徑? 在上面的示例中,結果將是: stuff/xyz.html

另一個例子:

/relative/sub/foo/sub/file
/relative/path
../../../path 

這類似於這個問題,但我正在尋找最佳的 JavaScript 解決方案,而不是 Java。

如果您在node.js的服務器上運行它:

http://nodejs.org/api/path.html#path_path_relative_from_to

這是他們的實施:

https://github.com/joyent/node/blob/master/lib/path.js#L233

這應該在瀏覽器中工作而不需要任何更改。 它已經過戰斗測試,所以它已經處理了邊緣情況。 它不是一個單行,但它完美無缺,我認為更重要。 POSIX版本也不錯,如果這是你唯一認為需要支持的版本。

使用URL處理很容易出錯,所以我強烈建議使用庫來處理所有細節。

URI.js使這很簡單:

URI('/var/data/stuff/xyz.html').relativeTo('/var/data');

JS URL API 現在應該在瀏覽器中處理這個問題: https://developer.mozilla.org/en-US/docs/Web/API/URL/

新網址(網址,基礎)

// Base urls
let m = 'https://developer.mozilla.org';
let a = new URL("/", m);                                // => 'https://developer.mozilla.org/'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM