基于Vue3和Element Plus实现Tab导航栏
在开发后台管理系统的时候,我们通常会在脚手架的基础上,利用UI框架快速搭建起Layout模板,而导航栏便是Layout里最常用的一个组件之一了。这篇文章主要用Vue + Vue Router + Pinia + Element Plus来快速实现一套Tab导航栏。

前置准备
首先要保证你的项目中已经安装了以下依赖,它们是实现Tab导航栏必不可缺的一部分。
1 | |
如果你是从头创建一个后台管理系统,你可以使用以下命令来初始化项目。
1 | |
然后你会得到以下的项目结构:
1 | |
接着安装上述依赖
1 | |
开发Tab导航栏
框架基本改造
首先我们对脚手架生成的项目进行基本的改造,引入我们安装好的依赖。
1 | |
1 | |
1 | |
编写路由
接着我们在src目录下新建router文件夹,用来存放我们的路由文件。这里我们通过meta对象的hidden属性来决定该路由是否在菜单栏中隐藏。通过isShow属性来决定该路由是否为一级菜单。
1 | |
编写Layout组件
在src目录下新建layout文件夹,用来存放后台管理系统的框架。同时在layout目录下新建components文件夹,用来存放layout相关的组件。这里我们的layout组件的布局采用较为常见的上,下(左右)结构。
我的项目用了sass,所以style lang=”scss”,没用sass的话把lang属性去掉,然后把层级嵌套去掉即可。
1 | |
编写Store数据
Layout组件编写好以后,我们来编写Store数据,这里我们没有用Vuex,而是选用pinia,毕竟使用起来比Vuex顺手多了,而且不需要再写那么多的冗余操作。这里的Store主要用于菜单栏和Tab导航栏之间的数据通信。
1 | |
编写菜单栏组件
菜单栏主要用到element-plus的el-menu组件,子菜单我们通过编写SidebarItme组件递归调用,将路由文件里的children数据传递到子组件里。
1 | |
1 | |
编写Tab导航组件
依旧在layout/components目录下创建好对应的文件,编写以下代码。
1 | |
通过上面的代码,我们已经能够实现点击左侧菜单,跳转对应页面,并实现Tab导航栏自动联动的功能。
编写路由守护
但整体来说,还是有一点小小的缺陷在里面,当我们手动在url输入页面地址的时候,Tab导航栏并没有响应,下面我们通过编写路由守护来完善它。
1 | |
小结
整个功能实现起来并不复杂,其实就是对数据的操作和组件的响应。对于很多前端同行来说,也就是看个热闹,但是对于一些初入前端的同学来说,也能给他们提供一些思路和经验。最后希望这篇笔记能帮助到屏幕前的你。












