4

2 つの絶対パスを指定すると、たとえば

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

2 番目のパスをベースとして使用する相対パスを作成する方法は? 上記の例では、結果は次のようになります: stuff/xyz.html

もう一つの例:

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

これはこの質問に似ていますが、Java ではなく最適な JavaScript ソリューションを探しています。

4

2 に答える 2

7

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 バージョンは悪くありません。サポートする必要があると思うのであれば、それだけです。

于 2012-12-05T20:20:23.977 に答える
1

URL の処理は非常に間違いやすいので、ライブラリを使用してすべての重要な詳細に対処することを強くお勧めします。

URI.jsはこれを簡単にします:

URI('/var/data/stuff/xyz.html').relativeTo('/var/data');
于 2012-12-05T20:14:41.350 に答える