Files
admin-vben/docs/项目架构文档.md

5.7 KiB

项目架构文档

系统架构概述

yudao-ui-admin-vben 采用现代化的前端架构设计,基于 Vue3 + TypeScript + Monorepo 技术栈,提供可扩展、高性能的企业级管理系统解决方案。

整体架构

架构图

graph TB
    A[用户界面] --> B[应用层]
    B --> C[业务逻辑层]
    C --> D[数据访问层]
    D --> E[后端API]
    
    F[构建工具] --> G[打包优化]
    G --> H[部署发布]
    
    I[开发工具] --> J[代码检查]
    J --> K[测试验证]

技术栈分层

层级 技术栈 说明
表现层 Vue3 + TypeScript 用户界面渲染
应用层 Vue Router + Pinia 路由和状态管理
工具层 Vite + ESLint 构建和代码检查
基础设施 Node.js + pnpm 运行环境和包管理

Monorepo 架构设计

项目结构

yudao-ui-admin-vben/
├── apps/                    # 应用目录
│   ├── web-antd/           # Ant Design 版本应用
│   ├── web-ele/            # Element Plus 版本应用
│   ├── web-naive/          # Naive UI 版本应用
│   └── backend-mock/       # 后端模拟服务
├── packages/               # 共享包目录
│   ├── @core/              # 核心功能包
│   ├── constants/          # 常量定义包
│   ├── effects/            # 副作用管理包
│   ├── icons/              # 图标库包
│   ├── locales/            # 国际化资源包
│   ├── stores/             # 状态管理包
│   ├── styles/             # 样式文件包
│   ├── types/              # 类型定义包
│   └── utils/              # 工具函数包
├── internal/               # 内部配置目录
│   ├── lint-configs/       # 代码规范配置
│   ├── tailwind-config/    # Tailwind 配置
│   ├── tsconfig/           # TypeScript 配置
│   └── vite-config/        # Vite 配置
└── scripts/                # 脚本工具目录

包依赖关系

graph LR
    A[apps/web-antd] --> B[packages/@core]
    A --> C[packages/stores]
    A --> D[packages/utils]
    
    B --> E[packages/types]
    C --> E
    D --> E
    
    F[apps/web-ele] --> B
    F --> C
    F --> D
    
    G[apps/web-naive] --> B
    G --> C
    G --> D

核心模块设计

1. 应用模块 (apps/)

功能特性

  • 多主题支持: 同一套业务逻辑,不同 UI 表现
  • 独立部署: 每个应用可独立构建部署
  • 共享代码: 通过 packages 共享公共逻辑

技术实现

  • Vue3 Composition API
  • TypeScript 类型安全
  • Vite 快速构建
  • 热重载开发体验

2. 核心包模块 (packages/@core)

基础功能

  • 基础组件封装
  • 工具函数集合
  • 类型定义扩展
  • 配置管理

设计原则

  • 单一职责原则
  • 依赖倒置原则
  • 接口隔离原则
  • 开闭原则

3. 状态管理模块 (packages/stores)

状态分类

  • 用户状态 (用户信息、权限)
  • 应用状态 (主题、语言、布局)
  • 业务状态 (页面数据、表单状态)

技术实现

  • Pinia 状态管理
  • 持久化存储
  • 类型安全的状态访问

4. 工具模块 (packages/utils)

工具分类

  • 数据处理工具
  • 日期时间工具
  • 表单验证工具
  • 网络请求工具

数据流设计

单向数据流

用户操作 → 组件事件 → Action → Mutation → State → 组件更新

异步数据流

组件挂载 → 发起请求 → 加载状态 → 数据处理 → 更新状态 → 界面渲染

路由设计

路由结构

/                   # 首页
/login             # 登录页
/dashboard         # 仪表板
/system           # 系统管理
/system/user      # 用户管理
/system/role      # 角色管理
/system/menu      # 菜单管理

路由守卫

  • 登录状态验证
  • 权限验证
  • 路由拦截
  • 页面标题设置

权限设计

RBAC 权限模型

  • 用户 (User)
  • 角色 (Role)
  • 权限 (Permission)
  • 菜单 (Menu)

权限控制级别

  • 页面级权限
  • 按钮级权限
  • 数据级权限
  • 功能级权限

构建部署架构

开发环境

  • Vite 开发服务器
  • 热重载支持
  • Source Map 调试

生产环境

  • Vite 生产构建
  • 代码分割优化
  • 资源压缩处理
  • CDN 部署支持

部署策略

  • 静态资源部署
  • 多环境配置
  • 版本控制
  • 回滚机制

性能优化策略

构建优化

  • 代码分割
  • 树摇优化
  • 懒加载
  • 预加载

运行时优化

  • 虚拟滚动
  • 防抖节流
  • 缓存策略
  • 图片优化

安全架构

前端安全

  • XSS 防护
  • CSRF 防护
  • 数据加密
  • 输入验证

权限安全

  • JWT 令牌
  • 路由守卫
  • API 权限验证
  • 数据权限控制

扩展性设计

插件系统

  • 组件插件化
  • 功能模块化
  • 配置可扩展
  • 主题可定制

微前端支持

  • 模块联邦
  • 独立部署
  • 技术栈无关
  • 团队协作

监控运维

性能监控

  • 页面加载时间
  • 接口响应时间
  • 错误监控
  • 用户行为分析

日志系统

  • 操作日志
  • 错误日志
  • 性能日志
  • 安全日志

技术选型理由

Vue3 优势

  • 更好的性能
  • 更好的 TypeScript 支持
  • 更小的包体积
  • 更好的开发体验

Monorepo 优势

  • 代码共享方便
  • 版本管理统一
  • 构建优化明显
  • 团队协作高效

Vite 优势

  • 极速的冷启动
  • 快速的热更新
  • 丰富的插件生态
  • 优化的生产构建

架构演进规划

短期目标

  • 完善现有功能
  • 优化性能体验
  • 丰富文档体系

长期目标

  • 微前端架构支持
  • 低代码平台集成
  • AI 辅助开发
  • 云原生部署