# 开发文档 ## 开发环境搭建 ### 环境要求 - **Node.js**: 18.0.0 或更高版本 - **pnpm**: 8.0.0 或更高版本 - **Git**: 2.0.0 或更高版本 ### 安装步骤 1. **安装 Node.js** ```bash # 下载并安装 Node.js 18+ # 验证安装 node --version npm --version ``` 2. **安装 pnpm** ```bash # 使用 npm 安装 pnpm npm install -g pnpm # 验证安装 pnpm --version ``` 3. **克隆项目** ```bash git clone https://github.com/vbenjs/vue-vben-admin.git cd vue-vben-admin ``` 4. **安装依赖** ```bash # 安装项目依赖 pnpm install ``` 5. **启动开发服务器** ```bash # 启动 Ant Design 版本 pnpm dev:antd # 启动 Element Plus 版本 pnpm dev:ele # 启动 Naive UI 版本 pnpm dev:naive ``` ## 项目结构说明 ### 目录结构详解 ``` yudao-ui-admin-vben/ ├── apps/ # 应用目录 │ ├── web-antd/ # Ant Design 版本 │ │ ├── src/ # 源代码 │ │ │ ├── api/ # API 接口 │ │ │ ├── components/ # 组件 │ │ │ ├── layouts/ # 布局 │ │ │ ├── router/ # 路由 │ │ │ ├── store/ # 状态管理 │ │ │ ├── utils/ # 工具函数 │ │ │ └── views/ # 页面视图 │ │ └── package.json # 应用配置 │ ├── 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 配置 ``` ### 核心包说明 #### @core 包 - 基础组件封装 - 工具函数集合 - 类型定义扩展 #### stores 包 - 全局状态管理 - 用户信息存储 - 应用配置管理 #### utils 包 - 数据处理工具 - 日期时间工具 - 表单验证工具 ## 开发规范 ### 代码规范 #### 1. 命名规范 - **文件命名**: 使用 kebab-case (例如: user-info.vue) - **组件命名**: 使用 PascalCase (例如: UserInfo) - **变量命名**: 使用 camelCase (例如: userName) - **常量命名**: 使用 UPPER_SNAKE_CASE (例如: API_BASE_URL) #### 2. 组件规范 ```typescript // 组件结构示例 ``` #### 3. API 调用规范 ```typescript // api/user.ts import { request } from '@/utils/request' export interface User { id: number name: string email: string } export const userApi = { // 获取用户列表 getUsers: (params: { page: number; size: number }) => { return request.get<{ list: User[]; total: number }>('/api/users', { params }) }, // 创建用户 createUser: (data: Omit) => { return request.post('/api/users', data) }, // 更新用户 updateUser: (id: number, data: Partial) => { return request.put(`/api/users/${id}`, data) }, // 删除用户 deleteUser: (id: number) => { return request.delete(`/api/users/${id}`) } } ``` ### 样式规范 #### 1. CSS 类命名 - 使用 BEM 命名规范 - 避免使用全局样式 - 优先使用 Tailwind CSS ```css /* BEM 示例 */ .user-list {} .user-list__item {} .user-list__item--active {} .user-list__item__avatar {} ``` #### 2. Tailwind CSS 使用 ```vue ``` ## 功能开发指南 ### 1. 新增页面 #### 步骤 1: 创建页面组件 ```bash # 在 apps/web-antd/src/views/ 下创建页面目录 mkdir -p apps/web-antd/src/views/user-management ``` #### 步骤 2: 创建页面组件 ```vue ``` #### 步骤 3: 配置路由 ```typescript // apps/web-antd/src/router/routes.ts import type { RouteRecordRaw } from 'vue-router' export const routes: RouteRecordRaw[] = [ // ... 其他路由 { path: '/user-management', name: 'UserManagement', component: () => import('@/views/user-management/index.vue'), meta: { title: '用户管理', requiresAuth: true } } ] ``` ### 2. 新增组件 #### 创建可复用组件 ```vue ``` ## 开发计划 ### 第一阶段:基础功能开发 (1-2周) #### 任务清单 - [x] 项目环境搭建 - [x] 基础架构配置 - [x] 用户登录功能 - [x] 权限管理系统 - [x] 基础布局组件 #### 技术要点 - Vue3 Composition API 使用 - TypeScript 类型定义 - Pinia 状态管理 - Vue Router 路由配置 ### 第二阶段:业务功能开发 (2-3周) #### 任务清单 - [x] 用户管理模块 - [x] 角色管理模块 - [x] 菜单管理模块 - [x] 系统设置模块 - [x] 数据表格组件 #### 技术要点 - 表单验证处理 - 表格数据展示 - 分页查询优化 - 文件上传下载 ### 第三阶段:优化完善 (1周) #### 任务清单 - [x] 性能优化 - [x] 代码重构 - [x] 测试用例编写 - [x] 文档完善 #### 技术要点 - 代码分割优化 - 懒加载实现 - 单元测试覆盖 - 文档自动生成 ## 常见问题解决 ### 1. 依赖安装问题 **问题**: pnpm install 失败 **解决方案**: ```bash # 清理缓存 pnpm store prune # 重新安装 pnpm install --force ``` ### 2. 类型检查错误 **问题**: TypeScript 类型错误 **解决方案**: ```bash # 检查类型错误 pnpm type-check # 自动修复 pnpm lint:fix ``` ### 3. 构建失败 **问题**: 生产构建失败 **解决方案**: ```bash # 清理构建缓存 pnpm clean # 重新构建 pnpm build ``` ## 测试指南 ### 单元测试 ```typescript // __tests__/user.spec.ts import { describe, it, expect } from 'vitest' import { mount } from '@vue/test-utils' import UserInfo from '@/components/UserInfo.vue' describe('UserInfo', () => { it('renders user name correctly', () => { const wrapper = mount(UserInfo, { props: { user: { name: '张三', email: 'zhangsan@example.com' } } }) expect(wrapper.text()).toContain('张三') }) }) ``` ### E2E 测试 ```typescript // __tests__/e2e/user.spec.ts import { test, expect } from '@playwright/test' test('user login flow', async ({ page }) => { await page.goto('/login') await page.fill('[data-testid="username"]', 'admin') await page.fill('[data-testid="password"]', '123456') await page.click('[data-testid="login-btn"]') await expect(page).toHaveURL('/dashboard') }) ``` ## 部署指南 ### 开发环境部署 ```bash # 启动开发服务器 pnpm dev:antd # 访问地址 http://localhost:3000 ``` ### 生产环境部署 ```bash # 构建生产版本 pnpm build:antd # 部署到服务器 # 将 dist 目录上传到 Web 服务器 ``` ## 性能优化 ### 构建优化 - 代码分割 - 树摇优化 - 压缩资源 - 缓存策略 ### 运行时优化 - 虚拟滚动 - 图片懒加载 - 组件懒加载 - 防抖节流 ## 安全指南 ### 前端安全 - XSS 防护 - CSRF 防护 - 输入验证 - 权限控制 ### 代码安全 - 敏感信息加密 - API 密钥保护 - 代码混淆 - 安全审计 ## 维护指南 ### 日常维护 - 定期更新依赖 - 监控系统性能 - 备份重要数据 - 安全漏洞修复 ### 版本管理 - 使用 Git 版本控制 - 遵循语义化版本 - 定期发布版本 - 维护更新日志