Vue项目里 this.$router.push、replace、go的区别

1、this.$router.push

描述:跳转到不同的url,但这个方法会向history添加一个记录,点击后会返回到上一个页面
相当于 <router-link :to="...">
用法

//字符串
this.$router.push('home')
//对象
this.$router.push({path:'home'})
//命名的路由
this.$router.push({name:'user',params:{userId:123}})
//带查询参数,变成/register?plan=private
this.$router.push({path:'register',query:{plan:'private'}})

2、this.$router.replace

描述:跳转到指定URL,替换history栈中最后一个记录,点击后退会返回至上上一个页面,上一个记录是不存在的.
(A----->B----->C 结果B被C替换 A----->C)

//声明式:
  <router-link :to="..." replace></router-link>
  // 编程式:
  router.replace(...)
  //push方法也可以传replace
  this.$router.push({path: '/home', replace: true})

3、this.$router.go

描述:相当于当前页面向前或向后跳转多少个页面,类似window.history.go(n)。n可为正数或者也可以为负数
用法

//在浏览器记录中前进一步,等同于history.forward()
this.$router.go(1)
//后退一步记录
this.$router.go(-1)
//前进三步记录
this.$router.go(3)