前端学习(一):Vue路由

117 阅读3分钟

前文

哈啰,宝子们,今天让我一起来看看Vue2路由的一些配置

一、路由模块的封装

1.抽离路由规则,并且暴露规则

image.png

2.main.js中引入路由规则,并挂载

image.png

3.在App.vue或者需要展示路由的地方设置路由占位符

image.png

二、路由高亮

1.当前被选择的路由会自动绑定类名(router-link-exact-active 和 router-link-active)

image.png

2.router-link-exact-active 和 router-link-active有什么区别呢?

举例声明式导航路径设置为find:router-link to="/find"

router-link-active:模糊匹配,凡是以find开头的路径元素,都会绑定上这个类名

router-link-exact-active:精确匹配,只有find路由元素才会绑定这个元素,其它比如:/find/one,都不会绑定这个类名

3.自定义匹配类型

在匹配路由规则时,可以设置自定义高亮类名

image.png

可以看到,选中指定路径时,会自动绑定类名

image.png

三、声明式导航-路由传参

1.查询参数传参(更适合多个参数传参)

传参:to="/path?参数=值"

image.png

接受:$route.query.参数名

image.png

2.动态路由(更适合单个参数)

传参:在匹配路由规则时就设置参数名

image.png

接受:$route.params.参数名

image.png

四、路由重定向、404路由、路由模式 (1)路由重定向(切换为/时触发)、404路由(找不到这个路由时触发)

配置路由规则时设置

image.png

(2)路由模式

image.png

如果切换成为history模式的时候需要提醒后台去注意匹配路由规则

五、编程式导航

1.跳转方式

path(短路径)

image.png

name(长路径)

本质:在设置路由规则时,使用一个简单代称去修饰路径

image.png

image.png

2.传参方式

查询参数传参

image.png

动态路由传参

image.png

区别:动态路由在路由规则中设置传递参数,查询参数直接在路径中上传参数,直接和间接的区别

与,query会在url上暴露参数名,两者都是以对象键值对的方式组织数据

六、组件缓存

在实际开发中我们会遇到一个问题,就是二级路由返回一级路由时,原先一级路由会被销毁,页面重新顶置

解决方案:使用缓存组件,包裹元素,维持组件状态

image.png

随之而来的问题:

1.缓存组件连带着二级路由也进行了缓存,因此下一次进入二级路由时,会永远显示同一个二级路由页面

image.png

解决方案:

使用include等精准缓存组件

image.png

2.缓存组件之后,创建/创建前(只有第一次触发),销毁/销毁前,挂载/挂前(只有第一次触发)钩子函数无法触发

因此在组件缓存之后,就无法在原先的钩子函数进行操作

解决方案:

使用缓存组件特有的声生命周期钩子函数

activated(组件激活时)            该钩子在服务器端渲染期间不被调用。

被 keep-alive 缓存的组件激活时调用。初始化操作放在actived里面

deactivated(组件停用时)        该钩子在服务器端渲染期间不被调用。