从两个绝对路径构造JavaScript中的相对路径

Ada*_*nez 3 javascript path

给出两条绝对路径,例如

/var/data/stuff/xyz.html
/var/data
Run Code Online (Sandbox Code Playgroud)

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

另一个例子:

/relative/sub/foo/sub/file
/relative/path
../../../path 
Run Code Online (Sandbox Code Playgroud)

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

bea*_*mit 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版本也不错,如果这是你唯一认为需要支持的版本.