Shane's ink

Back

Vue3+TS+Pinia 企业级后台管理系统项目Blur image

1.技术选型与项目基石#

在选择技术栈时,我追求的是 高性能、强类型、高效率,确保项目能够应对复杂的业务需求和长期的维护。

1.1 核心技术栈#

  • Vue 3 (Composition API):利用其 Composition API 带来的逻辑复用和更好的 TypeScript 支持。
  • TypeScript (TS):全项目采用 TypeScript 编写,有效提升代码质量和可维护性。
  • Element Plus:优秀的企业级组件库,快速搭建美观的用户界面。
  • Pinia:轻量级、类型友好的状态管理库,取代了复杂的 Vuex。
  • Vite:闪电般的开发启动和热更新体验,极大地提高了开发效率。
  • Echarts:用于数据大屏,实现强大的数据可视化能力。
  • pnpm:用于依赖管理,保证安装速度和磁盘空间的有效利用。
  • ESLint & Prettier:强制执行统一的代码规范和风格,保证团队协作效率。

2.核心功能亮点深度解析#

本项目不仅是一个模板,更是一个包含复杂业务逻辑的完整系统。

2.1 完善的权限控制(ACL)#

这是后台系统的核心。项目实现了从前端路由到页面元素粒度的全方位权限管理。

  • 用户与角色管理:灵活分配系统用户和定义不同职能的角色。 alt text
    alt text
  • 菜单权限:根据用户角色动态生成侧边栏菜单和路由。
  • 按钮权限:通过自定义指令 src/directives/auth.ts 实现 按钮级别 的权限控制,确保用户只能操作被授权的功能。
    alt text

2.2 深入的商品管理模块#

该模块覆盖了电商后台的核心业务流程。

  • 品牌管理:维护商品品牌信息。
    alt text
  • 属性管理 (Attr):定义商品的通用属性,如颜色、尺寸等。
    alt text
  • SKU/SPU 管理:实现了复杂的 SKU (库存单位)SPU (标准化产品单元) 的增删改查流程,并封装了专门的表单组件(如 SpuForm.vueSkuForm.vue),使业务逻辑清晰分离。
    alt text
    alt text

2.3 酷炫的数据可视化大屏#

src/views/screen 目录下,我专门构建了一个基于 Echarts 的全屏数据大屏页面。它集成了多种图表组件,包括:

  • 地图可视化map/index.vue,包含 china.json 地图数据)。
  • 趋势分析年龄/性别分布统计排行 等组件。
  • 提供了一个直观、动态的数据展示窗口,非常适合用于监控和决策。
    alt text

2.4 极致的用户体验 (UX)#

为了让系统更加现代化和易用,我加入了多种体验优化:

  • 暗黑模式:一键切换至暗色主题,减轻夜间使用时的视觉疲劳。
  • 主题色切换:支持自定义主色调,满足不同品牌或个人偏好。
  • 全屏模式:提供无干扰的工作界面。
    alt text

3.项目结构与可配置性#

3.1 清晰的目录设计#

项目采用了清晰的模块化结构,方便功能扩展和定位:

Vue3-management-system/
  ├── mock/                     # 接口数据模拟
  ├── public/                   # 静态资源(不经过 Vite 处理)
  └── src/
      ├── api/                    # 接口请求模块
      │   ├── acl/                # 权限管理相关接口(菜单、角色、用户)
      │   ├── product/            # 商品管理相关接口
      │   └── user/               # 用户相关接口
      ├── assets/                 # 存放静态资源(图片、字体等)
      ├── components/             # 公共组件
      │   ├── Category/           # 三级分类选择器
      │   ├── Pagination/         # 分页组件
      │   └── SvgIcon/            # Svg 图标组件
      ├── directives/             # 自定义指令,如权限指令 (auth.ts)
      ├── layout/                 # 布局相关组件
      │   ├── menu/               # 侧边栏菜单
      │   └── tabbar/             # 顶部导航栏
      ├── router/                 # 路由配置
      ├── store/                  # Pinia 状态管理模块
      │   └── modules/            # 模块化状态
      ├── styles/                 # 样式文件
      ├── utils/                  # 工具函数(请求封装 request.ts、token 存储 token.ts 等)
      ├── views/                  # 页面视图组件
      │   ├── acl/                # 权限管理页面
      │   ├── product/            # 商品管理页面
      │   ├── screen/             # 数据大屏页面及子组件
      │   ├── home/               # 首页
      │   └── login/              # 登录页
      ├── main.ts                 # 项目入口文件
      ├── permission.ts           # 路由守卫和权限逻辑处理
      └── setting.ts              # 全局配置
text
  • src/api: 接口请求按照功能模块(aclproductuser)分类。
  • src/layout: 集中管理系统的布局、导航栏和菜单组件。
  • src/store: 使用 Pinia 模块化管理状态。
  • src/utils: 存放了网络请求封装 (request.ts)、Token 管理 (token.ts) 等核心工具。

3.2 高度可配置化#

项目的环境和外观都支持轻松配置:

  • 多环境配置:通过 .env.development / .env.production / .env.test 文件,可以方便地切换 VITE_SERVE 后端 API 地址。
  • 网站信息配置:修改 src/setting.ts 即可全局更改 Logo、网站 Title 和描述

4.总结#

这个 Vue3-management-system 项目是一个集大成的实战项目,它让我对 Vue 3、TypeScript 的工程化应用、复杂权限系统的搭建以及 Echarts 数据可视化有了更深的理解。


Github项目地址:Vue3_admin_template

Vue3+TS+Pinia 企业级后台管理系统项目
https://shane.beauty/blog/vue3_admin_template/
Author Shane
Published at October 12, 2025
Comment seems to stuck. Try to refresh?✨