2012-12-05 56 views
2

给定两条绝对路径,例如,从两个绝对路径构建JavaScript中的相对路径

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

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

又如:

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

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

+2

[使用URI.js](http://medialize.github.com/URI.js/)。 – zzzzBov

+0

“优化”是什么意思?代码大小,运行时间或内存使用情况最佳?代码大小为 – tjameson

+0

。无法想象内存使用率或运行时间对于如此微不足道的事情来说是一个相当大的因素。 –

回答

5

如果你使用的是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版本并不差,如果这是你唯一需要支持的。

+0

我正在运行客户端,但看起来可行。将看看我能否得到它的工作。 –

1

URL处理出错很容易,所以我强烈建议使用库来处理所有细节。

URI.js使这个简单的:

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

看起来它会起作用,但是有没有比整个图书馆更简洁的方式? –

+0

也许吧,但您有多关注监控您的表现? – zzzzBov

+0

足够接近照顾。 –