$router多用于路由的跳转 可以理解为动作需要 this.$router.push(path:'/');//不带参数 this.$router.push(path:'/',query:{id:1});//带参数 this.$router.go(-1);//路由往回一个 this.$router.go(0);//重载路由 $route多用于访问路由中的数据,可以理解为名词 console.log($route) //拿到路由的所有数据 console.log($route.path) //拿到当前路由的路径 console.log($route.name) //拿到当前路由的名字,如果你定义过 也可以用于监听 watch:{ '$route':()=>{ if(this.$route.name==='details'){ alert('当前是详情页') } } } 还有一个区别是router是一个全局的变量,一般在main.js里面与一下代码 const router = new VueRouter({ routes // (缩写)相当于 routes: routes }) router 就是一个全局的,他掌管路由的跳转之类的。可以在组件用来跳转路由。 而route会被注册到每一个组件当中去。你访问的会是当前组件的路由信息。 参考https://segmentfault.com/a/1190000009392552