router.push(location)在vue.js中,如果要跳转到不同的URL,需要使用router.push方法。当用户点击浏览器后退按钮时,此方法将向历史堆栈添加一条新记录并返回到之前的URL。当你点击时,内部会调用这个方法,所以点击相当于调用router.push(...)语句:Programmatic:router.push(...)//该方法的参数可以是字符串路径,也可以是描述地址的对象。//stringrouter.push('home')//objectthis.$router.push({path:'/login?url='+this.$route.path});//带有查询参数,变成/backend/order?selected=2this.$router.push({path:'/backend/order',query:{selected:"2"}});//命名路由router.push({name:'user',params:{userId:123}})router.replace(location)如果设置了replace属性(默认值:false),点击的时候会调用router.replace()而不是router.push(),所以导航后没有留下任何历史记录。即使单击后退按钮也不会返回到此页面。添加replace:true后,不会在history中添加新的记录,而是将当前的history记录替换为与其同名的方法名。//Declarative://Programmatic:router.replace(...)//push方法也可以通过replacethis.$router。push({path:'/home',replace:true})两种传参方式使用query:this.$router.push({path:'/home',query:{site:[],bu:[]}})Useparams:this.$router.push({name:'Home',//路由名称params:{site:[],bu:[]}})params:/router1/:id,/router1/123,/router1/789,这里的id叫paramsquery:/router1?id=123,/router1?id=456,这里的id叫query。两者都可以传参,有什么区别?Query参数配置为path,params参数配置为name。在参数中配置路径无效。Query不需要在路由配置中设置参数,但是必须设置params。查询传递的参数将显示在地址栏中。params参数refresh会失效,但是查询会保存传入的值,刷新后保持不变;5、路由配置:query{path:'/home',name:Home,component:Home}paramswriting:{path:'/home/:site/:bu',name:Home,component:Home}如果没有参数写在route上,也可以传,但是你的参数不会显示在url上,而且当你跳转到其他页面或者刷新页面打开的时候参数会丢失,http请求或者其他操作依赖此参数的将失败。6.获取接收到的跳转页面上的路由参数created(){letself=thisself.getParams()},watch(){'$route':'getParams'},methods:{getParams(){letsite=this.$route.query.siteletbu=this.$route.query.bu//如果是params参数就是this获取路由上的参数,后面没有rparams,是路由的一部分,必须存在。query是url后面拼接的参数,有没有也没关系。一旦在路由中设置了params,params就是路由的一部分。如果路由有params可以传参,但是跳转的时候没有传这个参数,会导致跳转失败或者页面没有内容。不设置params和query也可以传递参数,但是不设置params时,页面会刷新或者返回的参数丢失,而query不会出现这种情况。这一点上面已经提到了。最后总结:路由传参和传统传参是一样的。命名路由类似于表单提交和查询是url传递。在vue项目中,基本掌握这两个传参就可以搞定大部分应用了。最终总结如下:1.带params的命名路由,刷新页面参数会丢失2.带query的查询参数,刷新页面数据不会丢失3.接受参数,使用this.$router后跟名字获取参数值的路由