文章列表:
上一篇我们实现动态菜单,这里我们接着实现Tba栏和面包屑,为什么需要一起实现,因为这两个功能是紧密连接在一起的,这里便放在一起写。代码量略多, 请耐心阅读。
上一篇博客的进度页面展示
修改布局
可以在本地运行npm run dev
查看,这个页面的布局这边略微调整下,修改MainLayout.vue
说明:代码块中’-‘开头表示删除,’+’开头表示增加,接下来的学习中,可能会出现很多这样的情况,因为直接粘贴全部代码,实在是太占篇幅了。
修改过后运行代码,可以看到布局已经改了,关于布局,可以查看layout
,了解更多。
增加Tab栏
在layouts/comp
文件夹下新建HeadTab.vue
组件,编写静态代码,
紧接着修改MainLayout.vue
文件引入HeadTab.vue
组件,编辑过后完整MainLayout.vue
代码如下
重启项目或者刷新页面,可以看到如图所示
Tab栏已经正常的添加,现在还没有和菜单联动起来,接下来我们编写代码让菜单和Tab栏联动起来,
修改layout-store.ts
文件,笔者这里习惯了Setup写法,这里便改为使用pinia
的setup写法,改动也不大,主要使用了vue的自带的功能,感觉是更容易理解的,ref
就是state
,getters
就是computed
,普通的函数就是actions
,最后需要暴露出去的return
即可。非常经典的组合式API
主要原因可能是项目中都是setup组件,使用options
API的全局状态,思维上有点差异,也感觉处处受限制。
改动过后,新增部分工具方法,完整代码如下
这个写好了,主要功能包括方便后期的一些扩展,比如下面的面包屑的展示,还有登陆用户的token
修改quasar.config.js
文件
编辑framework.plugins
内容为,安装quasar的一些插件关于插件,可在文档中查看,用到的时候查看一下API即可。
增加登录页
在pages
目录中新建LoginPage.vue
文件,完整代码如下
编辑src\router\routes.ts
文件
增加登录页的路由,与动态菜单中对应的路由配置,编辑过后完整代码如下
编写路由跳转前置拦截
这里的逻辑有点多,我这边一一列举一下
- 处理无需鉴权鉴权的路由,比如登录页面,
- 处理Tab栏的联动。
- 处理面包屑的联动
- 处理三方链接的跳转逻辑
编辑src\router\index.ts
,完整代码如下,
最后修改HeadTab.vue,再加一点细节,
Tab的一些操作,如,关闭,关闭左侧,右侧等等,写这种代码需要一定的编码能力,修改过后完整代码,
最后总结
修改完成过后重启项目,访问主页,发现自动跳转到登录页了,点击登录,进入主界面,点点点菜单发现侧边菜单功能已经实现。
增加面包屑
新建HeadCrumbs.vue
文件
在src\layouts\comp\下新建HeadCrumbs.vue
文件,完整代码如下
面包屑组件中使用了一些动画,quasar集成animations
动画库十分简单,修改quasar.config.js
文件,
引入HeadCrumbs.vue
组件
修改MainLayout.vue
文件,引入相应组件,修改过后完整代码如下。
重启项目,不报错,继续优化,现在项目的雏形已经完成个七七八八了。最后我们让Head栏变得好看一点。首先编辑quasar.config.js
文件,在extras
块中添加fontawesome-v6
图标,继续编辑MainLayout.vue
文件,删去显示Quasar版本号的内容,替换成下面的内容,重启项目。即可看到最终结果
最后结果展示
下一篇教程地址
从0到一个前端后台管理框架(五)
封