vue-router的使用

Posted chujunqiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue-router的使用相关的知识,希望对你有一定的参考价值。

项目文件结构:

技术图片

vue.config.js 用于配置路径指向  注意:这里的文件名不能自定义

技术图片

vue-router的安装

这个项目用的是vue-cli3脚手架的项目结构可以选择安装 vue 和 vue-router

vue-router的安装  npm i –S vue-router  --运行依赖的安装

路由文件的抽离 router/index.js

技术图片

相关路由模块的导入

技术图片

路由组件导入时的路由懒加载写法:

const Home = () => import(‘../components/Home.vue‘)

技术图片

在vue模块中安装路由

技术图片

路由映射配置:

技术图片

路由重定向:

技术图片

路由嵌套:

技术图片

注意:路由嵌套时,children中的path可以不加斜杆

动态路由:

技术图片

创建路由对象

技术图片

vue实例中注入路由 main.js

技术图片

最后暴露自定义的路由实例

export default router

html页面中路由的应用 => 路由跳转

技术图片

router-link标签 用来进行路由跳转

router-view标签 用来展示路由组件

router-link 属性 (to:跳转路径 ,tag:渲染出来的标签,默认是a标签
replace:点击后不会创建history对象,即不能后退)
技术图片
技术图片
to属性绑定对象:
技术图片
请注意:用path属性指定路径后,params属性就不生效了
对象中可以通过name来指定要跳转的路由,前提是路由映射配置要用name设置命名路由
技术图片


通过自定义方法来定义路由的跳转

关键字 => $router 方法push replace back forward go

push:跳转某个路由

replace:跳转某个路由但是不生成history对象

back:返回到上一个history对象

forward:前进到下一个history对象

go:整形参数n 可传负数  正数forward n 个history对象

负数back n 个 history对象

技术图片

技术图片

路由传值的获取

关键字:$route

  • $route.path
    字符串,等于当前路由对象的路径,会被解析为绝对路径,如 "/home/news"
  • $route.params
    对象,包含路由中的动态片段和全匹配片段的键值对
  • $route.query
    对象,包含路由中查询参数的键值对。例如,对于 /home/news/detail/01?favorite=yes ,会得到$route.query.favorite == ‘yes‘
  • $route.router
    路由规则所属的路由器(以及其所属的组件)。
  • $route.matched
    数组,包含当前匹配的路径中所包含的所有片段所对应的配置参数对象。
  • $route.name
    当前路径的名字,如果没有使用具名路径,则名字为空。

技术图片

路由全局导航守卫 => 路由钩子函数

./router/index.js

技术图片

beforeEach每次路由跳转前要执行的函数

afterEach每次路由跳转后要执行的函数

参数:fn(to,from,next)

to跳转目标路由对象 => route对象

from跳转来源路由对象 => route对象

next函数,决定 继续跳转 还是中断跳转 还是重定向跳转


这里实现了网页title随路由跳转而动态变化

用to获取了要跳转的路由对象中meta元数据对象中的title

meta中有数据是因为事先已经在路由映射的配置中,给meta对象添加了数据

技术图片

路由组件守卫  => 路由组件钩子函数

技术图片

路由跳转时调用当前的路由组件时触发,参数定义与路由全局导航守卫一致

路由私有守卫

技术图片

路由跳转到当前有定义路由私有守卫的路由时触发,参数与上面一致

补充keep-alive标签的作用

技术图片

被keep-alive标签包裹的router-view标签中的组件对象不会随着路由跳转而被销毁

exclude可以用来排除路由组件 include用来包括路由组件 以此决定保护那些组件对象

取值是conponent名 ,也就是路由映射配置中的component


被keep-alive标签包裹的组件对象,因为组件对象被保存了下来,因此失去了created()

destroyed()组件钩子函数的作用,于是多了activated()和deactivated()的钩子函数

来判断当前组件是否处于显示状态。

下面是在Home组件中定义的actived():

技术图片












以上是关于vue-router的使用的主要内容,如果未能解决你的问题,请参考以下文章

百行代码带你入门 vue-router!

Vue总结第五天:vue-router (使用模块化(创建Vue组件)机制编程)router-link 标签的属性路由代码跳转懒加载路由嵌套(子路由)路由传递数据导航守卫)

如何使用 Vue-router 更改状态码?

无法使用 Vue-Router 获取 URL 中的参数

Vue-Router的使用详解

vue路由对象($route)参数简介