4

给定两条绝对路径,例如

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

如何创建以第二条路径为基础的相对路径?在上面的示例中,结果将是: stuff/xyz.html

另一个例子:

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

这类似于这个问题,但我正在寻找最佳的 JavaScript 解决方案而不是 Java。

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 回答