Vue3后台模板整理
之前做后台项目的时候,很多基础功能每个项目都要重新复制一遍,所以这次基于 Vue3 和 Vite 重新整理了一套后台模板
这篇主要记录一下后台模板的整体结构,先不深入到某一个功能点。
目前模板主要使用的是:
- Vue3
- Vite
- Element Plus
- Pinia
- Vue Router
- Axios
- SCSS
这些东西其实都不陌生,但是放在后台项目里面,还是需要整理出一套固定的写法。
为什么要整理模板
后台项目里面有很多东西是重复的。
比如:
- 登录
- 权限菜单
- 动态路由
- 顶部导航
- 左侧菜单
- 标签页
- 表格搜索
- 分页
- 上传
- 接口封装
如果每次新项目都从零开始搭一遍,时间会浪费在很多重复工作上。
所以我这次整理模板的思路就是:把后台系统中基本都会用到的东西先抽出来,后续新项目直接在这个基础上改。
项目结构
主要目录大概是这样:
1 | src |
这里面比较重要的是:
components:公共组件router:基础路由和路由守卫stores:Pinia 状态管理utils:请求、枚举、表格 mixin 等公共方法views/layout:后台整体布局views/pages:业务页面
布局
后台布局一般都是固定的几块:
- 左侧菜单
- 顶部栏
- 面包屑
- 标签页
- 页面内容区域
模板里面把这些内容放在 MainLayout.vue 中统一处理。
这样业务页面就不需要关心外层布局,只需要正常写页面内容即可。
普通业务页面大概保持这样的结构:
1 | <template> |
这样布局、滚动、标签页缓存都交给外层统一处理。
路由
后台系统的路由分为两类:
- 静态路由
- 动态路由
静态路由只保留登录页、layout、刷新中转页、404 页面。
真正的业务页面不直接写死在路由表中,而是通过后端返回的菜单动态生成。
这样做的好处是:不同账号看到的菜单不一样,能访问的页面也不一样。
菜单
后台菜单一般都是后端返回的树形结构。
模板中主要使用这些字段:
1 | { |
前端拿到菜单后,会做几件事:
- 保存完整菜单树
- 过滤侧边栏显示菜单
- 生成动态路由
- 保存按钮权限
请求
请求部分还是使用 Axios。
一般后台项目里面,请求封装至少要处理这些事情:
- 统一
baseURL - 统一携带 token
- 统一处理接口状态码
- 登录过期后跳回登录页
- 退出时清空路由和权限
这块后续也可以单独整理一篇。
表格
后台里面最多的页面就是表格页。
所以模板中把常用的表格能力放到了 tableMixin.js 中,比如:
- 查询
- 分页
- loading
- 表格高度
- 时间格式化
- 滚动重置
业务页面只需要关注自己的搜索条件和列表数据。
上传
上传也是后台项目里面经常用到的功能。
模板中整理了图片上传和文件上传,主要考虑几个场景:
- 单图上传
- 多图上传
- 文件上传
- 新增时清空
- 编辑时回填
- 保存时统一字段格式
上传组件后面也会单独写一篇。
总结
后台模板最重要的不是页面有多好看,而是基础能力是否完整。
我目前整理的方向就是:
- 路由权限统一
- 布局统一
- 表格统一
- 上传统一
- 请求统一
- 常用组件统一
后续新项目接进来的时候,只要补业务页面和接口就可以了。
以上就是我对 Vue3 后台模板整理的一些理解,如有错误,欢迎大佬指出。