是否可以从 VueJS 的路由中获取完整的 url(包括原点)?

Vic*_*tor 5 javascript vue.js vue-router vuejs2

在这个例子中:

const resolved = this.$router.resolve({
  name: 'about'
})

console.log(resolved.route.path)
Run Code Online (Sandbox Code Playgroud)

是否可以获取包含原点的路线?就像,如果 url 是site.com/about,代码会给出/about,所以我需要自己附加 origin: window.location.origin + resolved.route.path

Rya*_*yan 15

我一直在使用这个(使用 vue-router v4 进行测试,仅浏览器):

const route = router.resolve({ /* your route here */ });
const absoluteURL = new URL(route.href, window.location.origin).href;
Run Code Online (Sandbox Code Playgroud)

编辑:使用location.origin而不是location.href因为resolve().href已经包含base


Dan*_*Dan 8

不,不是来自路由器。

甚至路由器的base属性也是相对于应用程序根目录的:

应用程序的基本 URL。例如,如果整个单页应用程序在 /app/ 下提供服务,则 base 应使用值“/app/”。

$route.fullPath也从应用程序根目录开始。文档将其描述为:

完整解析的 URL,包括查询和哈希。

  • 在 Nuxt.js 中,它将是像“ctx.req.headers.host + ctx.route.fullPath”这样的串联 (2认同)