Vue Router的使用(插件)

功能

  1. 嵌套路由映射
  2. 动态路由选择
  3. 模块化、基于组件的路由配置
  4. 路由参数、查询、通配符
  5. 展示由 Vue.js 的过渡系统提供的过渡效果
  6. 细致的导航控制
  7. 自动激活 CSS 类的链接
  8. HTML5 history 模式或 hash 模式
  9. 可定制的滚动行为
  10. URL 的正确编码

安装

  1. npm i vue-router
  2. vue add router

使用vue add router 安装时全选yes(回车)就可以了,安装完成后会自动一个router文件和view文件

使用npm i vue-router安装时,所有的相关配置都要自己手动配置

使用

以npm i vue-router安装为例:

  1. import Vue from 'vue'
  2. import App from './App.vue'
  3. import router from './router'
  4. // 配置调试信息
  5. Vue.config.productionTip = false
  6. new Vue({
  7. router,
  8. render: h => h(App)
  9. }).$mount('#app')
  10. 需要在main.js中注册router组件

路由表:路由表放在router文件中

  1. import Vue from 'vue'
  2. import VueRouter from 'vue-router'
  3. import HomeView from '../views/HomeView.vue'
  4. //通过vue.use的方式注册路由
  5. Vue.use(VueRouter)
  6. // 路由表,配置路由相关信息
  7. const routes = [
  8. {
  9. path: '/',
  10. name: 'home',
  11. // 这样的引用方式是静态引入
  12. component: HomeView,
  13. // 写数据,当前HomeView下可以拿到这些数据
  14. // 在HomeView组件中,的mounted(){}生命周期中获取,也可以直接通过{{mustarche}}语法使用
  15. // 通过this.$route获取(路由表中数据)数据
  16. meta:{}
  17. },
  18. {
  19. path: '/right',
  20. name: 'content',
  21. component: ()=>
  22. // 动态引入
  23. // 这个注释是用来标注引入模块是什么名字
  24. import(/* webpackChunkName: "content" */"../components/RightContent.vue")
  25. },
  26. {
  27. path: '/right1',
  28. // 重定项
  29. redirect:"/right"
  30. },
  31. // 动态路由
  32. {
  33. // /:id动态传值,这里有值了后,前面使用router-link跳转时要传值
  34. // 例如:"/post/13", 这里的13就是动态数据
  35. // 静态的内容不能变,动态的数据必须传
  36. path:"/post/:id",
  37. component: ()=>
  38. // 这个注释是用来标注引入模块是什么名字
  39. import(/* webpackChunkName: "post" */"../views/post/post.vue")
  40. },
  41. // 嵌套路由,路由中套路由
  42. {
  43. path:"/post/:id",
  44. component: ()=>
  45. import(/* webpackChunkName: "post" */"../views/post/post.vue"),
  46. // 嵌套路由要在children中配置,
  47. // 路径中有"/"会被当成根路径
  48. //
  49. children:[
  50. {
  51. path:":id",
  52. // 在post.vue中放一个router-view可以通过嵌套路由,将要嵌套的postDetail.vue映射过去
  53. // component:import(/* webpackChunkName: "postDetail" */"../views/post/postDetail.vue"),
  54. ]
  55. }
  56. ]
  57. // 在这里实例化路由,并将路由表给实例化对象,
  58. // 还可以在这里配置相关的信息,
  59. const router = new VueRouter({
  60. // mode不同的模式,会有不同的url形态
  61. mode: 'history',
  62. base: process.env.BASE_URL,
  63. routes
  64. })
  65. export default router

通过router-link和router-view就可以展示页面了

  1. <!-- 跳转页面 -->
  2. // 和a标签很类似
  3. <router-link to="/right"></router-link>
  4. <!-- 映射路由 -->
  5. // <router-view>组件,用于映射跳转页面(相当于一个容器)
  6. 可以放在任何的地方
  7. <router-view>123</router-view>

过程

先配置路由(可以是静态路由,也可以是动态),实例化路由(router)并传入routes(路由表),mode(模式)等,然后导出router,在main.js中注册router。然后就可以使用router-view(类似slot)是一个容器,router-link用于跳转,类似a标签

查看路由信息

在一个组件内部调用router的api,通过this.$route查看有哪些api(这已经被挂载在vue原型上了),对应当前组件的路由。
this.$router就是vue-router的一个实例(相当于new Vue,实例化后,也会生成一个全局的router),对应router的全局配置