【问题标题】:Construct a relative path in JavaScript from two absolute paths从两个绝对路径构造 JavaScript 中的相对路径
【发布时间】:2012-11-23 18:29:49
【问题描述】:

给定两个绝对路径,例如

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

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

另一个例子:

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

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

【问题讨论】:

  • “最佳”是什么意思?代码大小、运行时间或内存使用情况最佳?
  • 代码大小。无法想象内存使用或运行时间会成为如此微不足道的重要因素。

标签: javascript path


【解决方案1】:

如果你使用 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 版本还不错,如果这是您需要支持的唯一想法。

【讨论】:

  • 我正在运行客户端,但这看起来可行。看看我能不能让它工作。
【解决方案2】:

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

URI.js 让这一切变得简单:

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

【讨论】:

  • 看起来可以,但有没有比包含整个库更简洁的方法?
  • 有可能,但您离关注您的表现有多近?
  • @AdamJimenez,这不是答案。您应该首先让您的网站正常运行,然后使用性能优化器进行测试,看看哪些地方可以获得最大的性能提升。过早的优化只会阻碍你。
猜你喜欢
  • 1970-01-01
  • 2011-08-11
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 2014-02-13
相关资源
最近更新 更多