Skip to content

前端架构

Vue 3 + TypeScript + Vuetify 技术栈,与后端 DDD 架构保持一致的领域划分。

Table of Contents

技术栈

类别技术说明
框架Vue 3响应式前端框架
构建Vite下一代构建工具
UIVuetify 3Material Design
状态Pinia状态管理
路由Vue RouterHash 模式

项目结构

src/
├── api/            # API 请求层
├── stores/         # Pinia 状态
├── router/         # 路由配置
├── pages/          # 页面组件
│   ├── admin/      # 管理后台
│   ├── auth/       # 认证页面
│   └── user/       # 用户中心
├── composables/    # 组合式函数
├── components/     # 共享组件
└── layouts/        # 布局组件

模块划分

模块路由功能
Auth/auth/*登录、注册、2FA
Admin/admin/*用户、角色、菜单管理
User/user/*个人资料、安全设置

路由系统

配置文件: src/router/index.ts

元信息说明
requiresAuth: true需要登录
requiresAuth: false公开页面

路由守卫: 在 router/index.ts 中实现认证逻辑

布局组件:

组件位置用途
AdminLayoutsrc/layouts/AdminLayout.vue管理后台布局
Sidebarsrc/views/common/Sidebar.vue导航菜单

状态管理

核心 Store: src/stores/auth.ts

状态说明
currentUser当前用户信息
isAuthenticated是否已登录
hasToken是否有 Token

Token 存储: src/utils/auth/storage.ts(localStorage)

API 层

目录用途
src/api/auth/认证 API
src/api/admin/管理端 API
src/api/user/用户端 API

核心机制:

机制位置说明
Token 自动附加client.ts 请求拦截器从 localStorage 读取
Token 自动刷新client.ts 响应拦截器401 时刷新后重试
错误统一处理errors.ts格式化错误消息

类型使用规范见 .claude/rules/frontend-api.md

组件开发

每个页面包含独立的组件、Composables 和类型定义:

src/pages/{module}/{feature}/
├── index.vue           # 页面入口
├── components/         # 页面私有组件
├── composables/        # 页面逻辑
└── types.ts           # 页面类型(可选)

Composable 模式:

类型命名返回
列表useXxxList{ items, loading, pagination }
表单useXxxForm{ form, submit, reset }
对话框useXxxDialog{ open, close, visible }

参考实现: src/pages/admin/users/composables/useUserList.ts

代码规范

工具用途
ESLint代码检查
Prettier代码格式化
TypeScript类型检查

文件命名:

  • 组件: PascalCase.vue
  • Composables: use*.ts
  • 工具函数: camelCase.ts

TypeScript 规范:

  • 禁止重复定义后端 DTO
  • 前端派生类型放在 src/api/types.ts

开发命令

bash
pnpm dev          # 启动开发服务器 (40013)
pnpm build        # 生产构建
pnpm lint         # ESLint 检查
pnpm vue-tsc      # 类型检查

基于 DDD + CQRS 架构的企业级应用模板