上一篇博客中我们实现了Tab栏和面包屑,但发现目前功能还十分简陋,很多功能并没有完善,于是我们这篇博客来完善一些项目
完善目标
1, 打开外部链接,以及在系统内部打开外部链接。
2, 切换页面使用使用动画,以及保留页面滚动高度。
3, 侧边菜单根据路由高亮。
4, 完善首页。
打开外部链接,以及在系统内部打开外部链接。
思路分析
简单来说就是内嵌一个iframe
标签,但是要和系统做到兼容,还是需要好好考虑的,
考虑的点
- 路由的参数传递。
- 正常页面的切换,以及同为外链页面的切换。
- 三方网页的加载动画。
编写代码
编辑my-router.ts
文件,增加菜单
1 | { |
增加过后,刷新重新登陆,菜单便加载出来,点击发现,跳转到404页面了。查看浏览器路径http://localhost:8080/#/https://www.baidu.com/
我们也就知道为什么跳转到404页面了,因为并没有绑定https://www.baidu.com/
这个路由,对于三方链接,是没有办法绑定固定路由的,也不需要绑定固定路由,只需要把这个三方链接当一个参数传递给一个固定展示三方链接内容的组件即可。说干就干。
在pages目录下新建OutsidePage.vue
组件,用来展示三方链接页面,编写下面代码
1 | <template> |
代码中的钩子函数,是为了在各种场景下能有一致的表现。比如三方页面之间切换场景,定时器是为了防止一些三方页面加载时间过长,而使页面一直处于加载中状态。
修改MenuItem.vue组件
- 修改handleClick函数使其兼容外链点击
- 修改base.d.ts中MenuItem类型定义,增加isBlank?: boolean;字段;
- 修改my-router.ts文件增加一个
百度-外
路由信息。 - 修改MenuItem.vue中的handleClick函数使其适应三方页面的链接
- 最后修改routes.ts文件增加外链的路由信息重要
编辑完成后的base.d.ts文件
1 |
|
在my-router.ts文件中增加一条路由信息
1 |
|
编辑过后的MenuItem.vue文件,重点查看handleClick函数
1 | <template> |
最后修改routes.ts文件增加外链的路由信息
1 | import { RouteRecordRaw } from 'vue-router'; |
到这里外链打开相关的代码就已经编写完成。重启项目查看效果。这时候我们看见貌似有些问题原来是百度主页不给内嵌网页展示,嘚,换成Vue官方文档得了。
修改my-router.ts文件,修改过后代码
1 | export default [ |
刷新页面,再次查看,已经完成。
实现侧边菜单根据路由高亮
思路分析
猛地一想并不复杂嗷,使用router获取当前路由然后根据菜单的path属性进行比对即可。这里会出现一个问题就是无法高亮父级菜单,不完美。
完美应该怎么解决呢,这里可以用面包屑的信息判断当前菜单是否高亮,因为面包屑是包含所有层级菜单,思路有了,代码编写就很简单了。
编写代码
修改MenuItem.vue文件,修改过后完整代码如下
1 | <template> |
菜单高亮已经完成,那么只剩下最后的保留页面滚动高度了
切换页面添加动画,以及保留页面滚动高度
思路分析
切页动画,这个需要使用Vue的transition
组件,其实这个组件我们已经用过不止一次了,可以查看Tab和面包屑组件代码,其中使用了此组件。
如果我们把页面滚动高度也视作为一种状态,那么是不是就可以很好的理解,页面的滚动高度就是一种状态,我只需要把页面的状态缓存起来,那么对应也就保存了页面对应的滚动高度。这里用到了Vue自带的keep-alive
组件。如何让Vue缓存路由对应的页面信息呢,且看代码。
编写代码
增加切页动画
修改MailLayout.vue
代码,修改过后完整代码,注意看下代码中的注释
1 | <template> |
仔细看代码的应该发现好像不止增加了切页动画功能,好像夹带了私货,😊😊😊,核心还是切页动画,私货啥的,只是一些小小的优化,或者说是一些细节,比如页面刷新功能。
到这里页面切换动画是就是以及实现了,但是实际操作发现好像动画并未生效,主要是因为每个页面都一样,导致不容易发现且也动画导致的。修改不同路由对应的页面即可。
保留页面滚动条高度
- 在pages下新增组件
MenuPage.vue
,UserPage.vue
组件, 为了演示滚动条滚动。 - 修改routes.ts文件内容
MenuPage.vue中代码
1 | <template> |
UserPage.vue中代码
1 | <template> |
routes.ts修改过后完整代码
1 | import { RouteRecordRaw } from 'vue-router'; |
编写完成,重启项目,切换用户管理和菜单管理页面,发现滚动条高度是能够被保存的,至此保存滚动条高度功能已经实现。
内容只是作为演示,实际使用中,内容标签应该写在q-scroll-area标签之中,以实现对滚动高度的保存。
到这框架的核心内容就已经介绍完了,如需继续管理,可关注wlf-admin项目,此项目为此教程的完整版,此教程,只简单介绍了后台管理框架较为核心的内容,组件展示,以及布局样例,都在完整版项目中。下面的代码,取自完整项目中
简单编辑首页
首先编辑package.json
文件,编辑过后代码如下
1 | { |
增加组件
按路径增加组件
src\components\cards\CardCharts2.vue
src\components\cards\CardSocial.vue
src\components\tabs\TabSocial.vue
CardCharts2.vue
代码内容
1 | <template> |
CardSocial.vue
代码内容
1 | <template> |
TabSocial.vue
代码内容
1 | <template> |
增加文件
按此路径新建文件src\pages\data\list.ts
1 |
|
首页代码
1 | <template> |
重启项目项目主页如图所示
此教程完结撒花~~~