vue实时获取路由地址

方式一:window.location

测试网址:http://www.myurl.com:8866/test?id=123&username=xxx
1.window.location.href(当前URL)
        结果:http://www.myurl.com:8866/test?id=123&username=xxx
2.window.location.protocol(协议)
        结果:http
3.window.location.host(域名 + 端口)
        结果:www.myurl.com:8866
4.window.location.hostname(域名)
        结果:www.myurl.com
5.window.location.port(端口)
        结果:8866
6.window.location.pathname(路径部分)
        结果:/test
7.window.location.search(请求的参数)
        结果:?id=123&username=xxx

	var url="www.baidu.com?a=1&b=2&C=3";//测试地址
	/*分析:最前面是?或&,紧跟着除 ?&#以外的字符若干,然后再等号,最后再跟着除 ?&#以外的字符,并且要分组捕获到【除?&#以外的字符】*/
	var reg=/[?&]([^?&#]+)=([^?&#]+)/g;
	var param={};
	var ret =  reg.exec(url);
	while(ret){//当ret为null时表示已经匹配到最后了,直接跳出
		param[ret[1]]=ret[2];
		ret = reg.exec(url);
	}
	console.log(param)

8.window.location.origin(’?'前边的URL)
        结果:http://www.myurl.com:8866
9.window.location.hash(获取#之后的内容)
        结果:null

方式二:vue-router

1.this.$route的内容:

在这里插入图片描述

(1)this.$route.fullPath:

        完成解析后的 URL,包含查询参数和 hash 的完整路径,即 “端口号/#” 之后的内容。
在这里插入图片描述

(2)this.$route.hash

当前路由的 hash 值 (带 #) ,如果没有 hash 值,则为空字符串。

(3)this.$route.matched

官网说明:一个数组,包含当前路由的所有嵌套路径片段的路由记录 。路由记录就是 routes 配置数组中的对象副本 (还有在 children 数组)。
在这里插入图片描述

(4)this.$route.meta、this.$route.name

在这里插入图片描述
在这里插入图片描述

(5)this.$route.name

当前路由的名称,如果有的话。

(6)this.$route.params

一个 key/value 对象,包含了动态片段和全匹配片段,如果没有路由参数,就是一个空对象。
在这里插入图片描述
在这里插入图片描述

(7)this.$route.query

一个 key/value 对象,表示 URL 查询参数。如果没有查询参数,则是个空对象。
在这里插入图片描述
在这里插入图片描述

2.实时获取route地址并根据地址做处理

watch: {
    $route(val) {
      //val即是this.$route
      //根据路由控制其他参数做不同处理
      if (val.path == "/xinyidai") {
        this.isCur = 5;
      } else if (val.path == "/fiProduct" || val.path == "/fiProductDetail") {
        this.isCur = 1;
      } else if (val.path == "/fiProductBx" ||val.path == "/fiProductBxDetail") {
        this.isCur = 2;
      } else if (val.path == "/stock" || val.path == "/stockDetail") {
        this.isCur = 4;
      } else {
        this.isCur = "";
      }
    },
  },
### Vue3 中获取当前路由地址的方法 在 Vue3 中,可以通过 `vue-router` 提供的功能来获取当前路由的相关信息。以下是几种常见的实现方式: #### 使用 `useRouter` 钩子 通过引入 `vue-router` 的 `useRouter` 函数,可以轻松访问路由器实例及其属性。具体代码如下: ```javascript import { useRouter } from 'vue-router'; const router = useRouter(); console.log(router.currentRoute.value.path); // 当前路径 [^1] ``` 此方法利用了组合式 API 的特性,能够直接读取到当前路由对象中的 `path` 属性。 --- #### 利用 `toRaw` 转换响应式数据 如果需要更深层次的操作或者避免某些框架内部优化带来的影响,可以借助 `toRaw` 将响应式对象转换为普通 JavaScript 对象后再操作: ```javascript import { defineComponent, toRaw } from 'vue'; import { useRouter } from 'vue-router'; export default defineComponent({ setup() { const router = useRouter(); console.log(toRaw(router).currentRoute.value.fullPath); // 完整路径字符串 [^3] return {}; } }); ``` 这里展示了如何使用 `toRaw` 来处理响应式的路由对象并提取完整的路径信息。 --- #### 查看整个路由对象的内容 对于调试目的或其他需求场景下,可以直接打印整个 `currentRoute` 对象以观察其结构: ```javascript import { useRouter } from "vue-router"; const router = useRouter(); console.log('路由:', router.currentRoute); // 打印路由对象 [^4] ``` 上述代码会输出包含路径 (`path`)、查询参数 (`query`) 和其他元信息在内的完整路由状态。 --- ### 总结 以上三种方法均适用于 Vue3 环境下的路由地址获取任务。推荐优先采用第一种基于 `useRouter` 的简洁写法,除非有特殊原因才考虑第二种或第三种方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值