vue2干货总结8(路由模块封装、router-link、声明式导航、路由重定向、编程式导航)

一.路由模块封装

将路由模块抽离出来,拆分模块,利于维护

1.src下新建文件夹router,在router中创建index.js文件,将相关的路由代码剪贴到index.js文中

注意:index.js文件中引入的文件路径(最好使用@绝对路径)、引入vue、路由导出

2.在main.js文件中导入路由文件index.js

二.router-link

需求:实现导航高亮效果

vue-router提供了一个全局组件router-link(取代a标签)

1.能跳转,配置to属性指定路径(必须)。本质还是a标签,to无需#

2.能高亮,默认就会提供高亮类名,可以直接设置高亮样式

然后只需要在nav-item标签上设置高亮颜色就可以了

router-link自动给当前导航添加了 两个高亮类名

1.router-link-active模糊匹配(用的多)

to="/my" 可以匹配 /my /my/a /my/b......

2.router-link-exact-active精确匹配

to="/my" 仅可以匹配 /my

自定义匹配的类名

1.在index.js文件中添加linkActiveClass 和linkExactActiveClass

2.修改样式

三.声明式导航---跳转传参

1.查询参数传参

语法:to="/path**?参数名=值"**

对应页面组件接收传递过来的值:$route.query.参数名

实现发现页到个人中心页的跳转并传参:

2.动态路由传参

1.配置动态路由

2.配置导航链接:to="/path/参数值"

3.对应页面组件接收传递过来的值:$route.params.参数名

两种传参方式的区别:

查询参数传参(比较适合传多个参数)

动态路由传参(优雅简洁,传单个参数比较方便)

注意:/my/:key表示,必须要传参数。如果不传参数,也希望匹配,可以加个可选符"?"

四.路由重定向

问题:网页打开,url默认是/路径,未匹配到组件时,会出现空白

重定向------匹配path后,强制跳转path路径

语法:{ path:匹配路径,redirect:重定向到的路径 }

如何配置404页面?

位置:配在路由最后

语法:path:' * '(任意路径)---前面不匹配就命中最后这个

模式设置:

hash路由(默认) :例如:http://localhost:8080**#/**home

history路由(常用) :例如:http://localhost:8080**/** home(以后上线需要服务器端支持)

五.编程式导航

两种路由跳转方式:

1.path路径跳转(简易方便)

语法:this.$router.push('路由路径')

完整写法:

javascript 复制代码
this.$router.push({
    path:'路由路径'
})

2.name命名路由跳转(适合path路径长的场景)

语法:

javascript 复制代码
this.$router.push({
    name:'路由名'
})
javascript 复制代码
{ name:'路由名',path:'/path/xxx',component:xxx }

两种跳转方式,对于两种传参方式都支持

path路径跳转传参(query传参)

javascript 复制代码
this.$router.push('/路径?参数名1=参数值1 & 参数2=参数值2')
this.$router.push({
    path:'/路径'
    query:{
        参数名1:'参数值1',
        参数名2:'参数值2'
    }
})
//接收:$router.query.参数名

path路径跳转传参(动态路由传参)

javascript 复制代码
this.$router.push('/路径/参数值')
this.$router.push({
    path:'/路径/参数值'
})
//接收:$router.params.参数值

name命名路由跳转传参(query传参)

javascript 复制代码
this.$router.push({
    name:'路由名字'
    query:{
        参数名1:'参数值1',
        参数名2:'参数值2'
})
//接收:$router.query.参数名

name命名路由跳转传参(动态路由传参)

javascript 复制代码
this.$router.push({
    name:'路由名字',
    params:{
        参数名:'参数值',
})
//接收:$router.params.参数值
相关推荐
旖旎夜光11 分钟前
【C++ 基础入门】C++ 多态(上):虚函数、重写、override/final 与抽象类
开发语言·c++·笔记·学习
SameX19 分钟前
HarmonyOS ArkUI Dialog 复用 用 @CustomDialog + enum type 做多类型统一管理的做法
前端
starzy199032 分钟前
深入理解Scala嵌套函数:作用域封装之道
开发语言·scala
AiMan36 分钟前
豆包爱学还是不可以导出左侧所有对话,只能单容导出,方法不对吗
前端
Sakura_j_h_42 分钟前
从零写一个 MCP stdio Server:用 Python 校验博客文章格式
开发语言·python·自动化·ai工具·mcp·json-rpc
无懈可击1 小时前
Vue 可视化AI表单设计器 FcDesigner v3.6 版本发布,支持导出 SQL功能!
vue.js·开源·ai编程
AiMan1 小时前
Grok生成的内容能否下载吗?
前端
徐小夕1 小时前
JitArchives,一款基于JitWord协同AI文档打造的企业级电子档案系统
前端·vue.js·github
陈随易2 小时前
Node.js 2026上半年都有哪些性能提升?
前端·后端·程序员