vue-router是什么
1、vue-router就是路径管理器。传统的页面应用,是用一些超链接来实现页面切换和跳转的。但是vue单页面应用只有静态资源和一个index.html页面,所以不能用a标签进行跳转,只能用vue-router来管理。在vue-router单页面应用中,路径之间的切换就是组件的切换。路由模块的本质 就是建立起url和页面之间的映射关系。
2、实现原理:单页面应用程序,只有一个完整的页面;它在加载页面时,不会加载整个页面,而是只更新某个指定的容器中内容。单页面应用(SPA)的核心之一是: 更新视图而不重新请求页面;vue-router在实现单页面前端路由时,提供了两种方式:Hash模式和History模式;根据mode参数来决定采用哪一种方式。
vue-router模式
1、Hash模式:使用URL的hash来模拟一个完整的URL。 hash(#)是URL 的锚点,代表的是网页中的一个位置,单单改变#后的部分,浏览器只会滚动到相应位置,不会重新加载网页;同时每一次改变#后的部分,都会在浏览器的访问历史中增加一个记录,使用”后退”按钮,就可以回到上一个位置。
2、History模式:这种模式充分利用了html5 history interface 中新增的 pushState() 和 replaceState() 方法。这两个方法应用于浏览器记录栈,在当前已有的 back、forward、go 基础之上,它们提供了对历史记录修改的功能。不过要在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。
实际使用
router配置文件
1 | // router/index.js |
引入router
1 | import Vue from 'vue' |
路由入口
1 | // App.vue |
嵌套路由(二级路由)
1 | // router/systemRouters.js |
用触发事件来代替router-link
1 | //App.vue |
路由组件传参
1 | // router |
$route和$router的区别
$route
1 | // $route 是“路由信息对象”,包括 path,params,hash,query,fullPath,matched,name 等路由信息参数。 |
$router
1 | this.$router.go(-1)//跳转到上一次浏览的页面 |