Vue-router笔记
tips:
所有组件都继承vue类原型
第一步: 创建路由组件
第二步: 配置路由映射: 组件和路径映射关系
第三步: 使用路由: 通过
//1. 通过vue.use(插件),安装插件
Vue.use(VueRouter)
// 2.创建vue router对象
const routes = [
{
path: '/',
redirect: '/home'
},
{
path: '/home',
component: Home
},
{
path: '/about',
component: About
}
]
const router = new VueRouter({
// 配置路由和组件之间的应用关系
routes,
mode: 'history'
})
// 3.将router对象传入到Vue实例
export default router
路由嵌套:
实现嵌套路由有两个步骤:
创建对应的子组件, 并且在路由映射中配置对应的子路由.
在组件内部使用
children: [
{
path: '/',
redirect: 'news'
},
{
path: 'news',
component: Homenews
},
{
path: 'message',
component: Homemessage
}
]
// 使用:
首页新闻
首页信息
路由懒加载:
// 原来导入
// import Home from '../components/Home.vue'
// import About from '../components/About.vue'
// import User from '../components/User.vue'
// 路由懒加载方式
const Home=()=>import('../components/Home.vue')
const About=()=>import('../components/About.vue')
const User=()=>import('../components/User.vue')
路由传递参数:
? params的类型:
? 配置路由格式: /router/:id
? 传递的方式: 在path后面跟上对应的值
? 传递后形成的路径: /router/123, /router/abc
? path: '/user/:userId',
用户
data(){
return {
userId: 'zhangsan'
}
},
? query的类型:
? 配置路由格式: /router, 也就是普通配置
? 传递的方式: 对象中使用query的key作为传递方式
? 传递后形成的路径: /router?id=123, /router?id=abc
档案
使用:
{{$route.query.name}}
{{$route.query.age}}
路由导航守卫:
vue-router提供的导航守卫主要用来监听监听路由的进入和离开的.
vue-router提供了beforeEach和afterEach的钩子函数, 它们会在路由即将改变前和改变后触发
导航钩子的三个参数解析:
to: 即将要进入的目标的路由对象.
from: 当前导航即将要离开的路由对象.
next: 调用该方法后, 才能进入下一个钩子
全局导航守卫:
// 在路由中有元数据
{
path: '/user/:userId',
component: User,
meta: {
title: '用户'
}
},
// 导航守卫 前置钩子(守卫guard)
router.beforeEach((to,from,next)=>{
// 从from跳转到to
document.title=to.matched[0].meta.title
console.log(to)
next() // 必须调用
})
keep-alive:
keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染