2022-02-09 面试题:vue(三) $router和$route的区别,computed和watch的区别

本文深入探讨了Vue中$router和$route的区别,揭示了它们在VueRouter中的作用和常见API。同时,详细比较了computed与watch的特性,包括缓存、异步操作和数据来源的差异,帮助读者深化理解Vue的这些核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.$router$route的区别?
回答
  • $router是VueRouter的实例,相当于一个全局的路由对象
    里面包含很多个属性和子对象,比如history,和常用的跳转链接this.$router.push
  • $route对象表示当前的路由信息,包含了当前URL解析得到的信息,包含当前的路由,参数和query对象等等
补充

1.$router常用api:

this.$router.push('hash 地址') 跳转到指定 hash 地址,并增加一条历史记录
② this.$router.go(数值 n) 实现导航历史前进、后退

2.$route常用的api

1、$route.path
字符串,对应当前路由的路径,总是解析为绝对路径,如 “/foo/bar”。
2、$route.params
一个 key/value 对象,包含了 动态片段 和 全匹配片段,
如果没有路由参数,就是一个空对象。
3.$route.query
一个 key/value 对象,表示 URL 查询参数。
例如,对于路径 /foo?user=1,则有 $route.query.user == 1,
如果没有查询参数,则是个空对象。
4.$route.hash
当前路由的 hash  (不带 #) ,如果没有 hash 值,则为空字符串。锚点
5.$route.fullPath
完成解析后的 URL,包含查询参数和 hash 的完整路径。
6.$route.matched
数组,包含当前匹配的路径中所包含的所有片段所对应的配置参数对象。
7.$route.name 当前路径名字
8.$route.meta 路由元信息
2,computed和watch的区别?
回答
  • computed支持缓存,watch不支持缓存
computed支持缓存,相依赖的数据发生改变才会重新计算;
watch不支持缓存,只要监听的数据变化就会触发相应操作
  • computed不支持异步,watch支持异步操作
computed不支持异步,当computed内有异步操作时是无法监听数据变化的;
watch支持异步操作
  • computed属性的属性值是一函数,watch监听的数据必须是data中声明过或父组件传递过来的props中的数据
computed属性的属性值是一函数,函数返回值为属性的属性值,computed中每个属性都可以设置setget方法。
 watch监听的数据必须是data中声明过或父组件传递过来的props中的数据,当数据变化时,触发监听器
补充

得分点

    computed值有缓存、触发条件是依赖值发生更改、 watch无缓存支持异步、监听数据变化

标准回答

    computed: 是计算属性,依赖其它属性值,
    并且 computed 的值有缓存,只有它依赖的属性值发生改变,
    下一次获取 computed 的值时才会重新计算 computed 的值;

    watch: 更多的是观察的作用,
    支持异步,类似于某些数据的监听回调 ,
    每当监听的数据变化时都会执行回调进行后续操作;

加分回答

    computed应用场景:需要进行数值计算,并且依赖于其它数据时,应该使用 computed,
    因为可以利用 computed 的缓存特性,避免每次获取值时,都要重新计算;

    watch应用场景:需要在数据变化时执行异步或开销较大的操作时,应该使用 watch,
    使用 watch 选项允许我们执行异步操作 ( 访问一个 API ),限制我们执行该操作的频率,
    并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值