Vue Router的使用(插件)
功能
嵌套路由映射动态路由选择模块化、基于组件的路由配置路由参数、查询、通配符展示由 Vue.js 的过渡系统提供的过渡效果细致的导航控制自动激活 CSS 类的链接HTML5 history 模式或 hash 模式可定制的滚动行为URL 的正确编码
安装
npm i vue-routervue add router
使用vue add router 安装时全选yes(回车)就可以了,安装完成后会自动一个router文件和view文件
使用npm i vue-router安装时,所有的相关配置都要自己手动配置
使用
以npm i vue-router安装为例:
import Vue from 'vue'import App from './App.vue'import router from './router'// 配置调试信息Vue.config.productionTip = falsenew Vue({router,render: h => h(App)}).$mount('#app')需要在main.js中注册router组件
路由表:路由表放在router文件中
import Vue from 'vue'import VueRouter from 'vue-router'import HomeView from '../views/HomeView.vue'//通过vue.use的方式注册路由Vue.use(VueRouter)// 路由表,配置路由相关信息const routes = [{path: '/',name: 'home',// 这样的引用方式是静态引入component: HomeView,// 写数据,当前HomeView下可以拿到这些数据// 在HomeView组件中,的mounted(){}生命周期中获取,也可以直接通过{{mustarche}}语法使用// 通过this.$route获取(路由表中数据)数据meta:{}},{path: '/right',name: 'content',component: ()=>// 动态引入// 这个注释是用来标注引入模块是什么名字import(/* webpackChunkName: "content" */"../components/RightContent.vue")},{path: '/right1',// 重定项redirect:"/right"},// 动态路由{// /:id动态传值,这里有值了后,前面使用router-link跳转时要传值// 例如:"/post/13", 这里的13就是动态数据// 静态的内容不能变,动态的数据必须传path:"/post/:id",component: ()=>// 这个注释是用来标注引入模块是什么名字import(/* webpackChunkName: "post" */"../views/post/post.vue")},// 嵌套路由,路由中套路由{path:"/post/:id",component: ()=>import(/* webpackChunkName: "post" */"../views/post/post.vue"),// 嵌套路由要在children中配置,// 路径中有"/"会被当成根路径//children:[{path:":id",// 在post.vue中放一个router-view可以通过嵌套路由,将要嵌套的postDetail.vue映射过去// component:import(/* webpackChunkName: "postDetail" */"../views/post/postDetail.vue"),]}]// 在这里实例化路由,并将路由表给实例化对象,// 还可以在这里配置相关的信息,const router = new VueRouter({// mode不同的模式,会有不同的url形态mode: 'history',base: process.env.BASE_URL,routes})export default router
通过router-link和router-view就可以展示页面了
<!-- 跳转页面 -->// 和a标签很类似<router-link to="/right"></router-link><!-- 映射路由 -->// <router-view>组件,用于映射跳转页面(相当于一个容器)可以放在任何的地方<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的全局配置
