Vue Router的使用(插件)
功能
嵌套路由映射
动态路由选择
模块化、基于组件的路由配置
路由参数、查询、通配符
展示由 Vue.js 的过渡系统提供的过渡效果
细致的导航控制
自动激活 CSS 类的链接
HTML5 history 模式或 hash 模式
可定制的滚动行为
URL 的正确编码
安装
npm i vue-router
vue 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 = false
new 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的全局配置