标准URL object可用于从相对URL和基本URL计算绝对URL,如下所示。
const base = 'http://example.com/'
const relative = '/foo/bar?quux=123'
const absolute = new URL(relative, base).href
console.assert(absolute === 'http://example.com/foo/bar?quux=123')
然而,我不知道如何使用URL对象来做相反的事情。
const base = 'http://example.com/'
const absolute = 'http://example.com/foo/bar?quux=123'
const relative = '???'
console.assert(relative === '/foo/bar?quux=123')
浏览器API是否提供了构建相对URL的标准化方法,还是我需要使用第三方解决方案?
3条答案
按热度按时间aor9mmx11#
浏览器API是否提供了构造相对URL的标准化方法?
是的,他们有。你已经用过了,
URL
或者,您可以创建一个临时的
<a>
-元素并从中获取值。新创建的<a>
-元素或URL
都实现了location
,因此您可以提取location
-属性:0tdrvxhp2#
最后我做了以下几点。
ssm49v7z3#
有一个名为
relateurl
的npm模块运行良好,但它对url
(注意小写)的依赖在最新的Webpack和React中造成了轻微的问题。我发布了另一个名为relativize-url
的模块,它使用URL
(shouty-caps),到处都支持。它非常小,所以你可以安装它,或者只是从index.js中窃取代码。pathname
处理程序中有额外的代码,可以为您提供良好的最小相对路径。请报告https://github.com/ericprud/relativize-url/issues中的错误。