Files
vibe_coding/docs/architecture/frontend-strategy.md
2026-03-05 21:27:11 +08:00

4.9 KiB
Raw Permalink Blame History

🖥️ 双前端架构策略

AI Agent 在生成前端代码时必须先阅读本文档,明确目标前端的职责边界、技术约束和设计原则。


1. 整体架构

本项目采用「一后端 + 双前端 + 共享层」架构:

vibe-cursor-pro/Cursor 工作区)
├── Case-Database-Backend/          ← PHP Hyperf + Swoole 后端(统一 API 服务)
├── Case-Database-Frontend-user/    ← Vue 3 用户端(面向终端用户)
├── Case-Database-Frontend-admin/   ← Vue 3 管理端(面向运营/管理人员)
└── Case-Database-Frontend-shared/           ← 共享类型定义、工具函数、API 契约常量

2. 前端职责边界

Case-Database-Frontend-user/(用户端)

维度 说明
目标用户 普通终端用户(公开访问 + 登录用户)
核心体验 性能优先、流畅交互、移动端友好
设计风格 品牌化、轻量、视觉吸引力强
页面规模 中小型页面,单页功能聚焦
权限模型 简单(登录/未登录、会员等级)
SEO 需求 有(落地页、详情页考虑 SSG/SSR
API 前缀 /api/(用户端接口)

典型页面:首页、商品详情、购物车、个人中心、订单查询

Case-Database-Frontend-admin/(管理端)

维度 说明
目标用户 内部运营人员、管理员
核心体验 功能完整、信息密度高、操作高效
设计风格 专业、实用、Element Plus 标准组件优先(仅管理端)
页面规模 复杂页面(多 Tab、嵌套表单、数据大表格
权限模型 精细RBAC角色、菜单、按钮级权限
SEO 需求 无(内部系统,登录后访问)
API 前缀 /admin/(管理端接口)

典型页面:数据看板、订单管理、用户管理、权限配置、系统设置


3. 共享层Case-Database-Frontend-shared/

仅包含纯 TypeScript内容(配合 JSDoc 类型注释),不引入任何 UI 框架:

Case-Database-Frontend-shared/
├── constants/      ← 业务枚举(订单状态、权限码等)
├── utils/          ← 纯函数工具(日期格式化、金额计算等)
└── api-schema/     ← API 请求/响应的 JSDoc 类型定义

规则Case-Database-Frontend-shared/ 中的代码必须可被两个前端同时使用,不得包含平台特定代码。


4. 技术差异对比

技术点 Case-Database-Frontend-user/ Case-Database-Frontend-admin/
UI 框架 自定义组件 + Tailwind Element Plus优先使用标准组件
响应式 移动优先xs → xl 桌面优先(≥ 1280px 为主)
路由 Vue RouterHistory 模式) Vue RouterHistory 模式 + 权限守卫)
状态管理 Pinia轻量 Store Pinia含权限 Store、菜单 Store
打包优化 激进代码分割、图片优化、SSG 评估 按需分割(菜单级懒加载)
错误处理 用户友好提示Toast 详细错误码 + 日志上报
主题 品牌色(见 ui-specs-user.md 专业蓝灰(见 ui-specs-admin.md

5. AI Agent 工作约定

目录前缀约定

每次前端相关任务,必须在 prompt 中明确指定目标目录

✅ 正确:在 Case-Database-Frontend-user/ 中创建商品详情页
✅ 正确:在 Case-Database-Frontend-admin/ 中创建订单管理页
❌ 错误:创建商品详情页(未指定前端)

设计原则差异

当 Agent 在 Case-Database-Frontend-user/ 工作时:

  • 移动端优先(先写 xs 断点,再扩展到 lg
  • 组件必须考虑骨架屏 / 懒加载
  • 图片必须有 alt 属性、考虑 WebP 格式
  • 交互反馈必须流畅(避免页面跳动)

当 Agent 在 Case-Database-Frontend-admin/ 工作时:

  • 桌面端优先(以 1280px 为基准设计)
  • 优先使用 Element Plus 标准组件(el-tableel-formel-dialog 等)
  • 页面操作必须有权限守卫(v-permission 指令 或 hasPermission() 检查)
  • 数据操作必须有二次确认(删除、批量操作等危险操作)

共享代码优先

在生成 API 调用代码时:

  1. 先检查 Case-Database-Frontend-shared/constants/ 是否已有对应枚举或常量
  2. 先检查 Case-Database-Frontend-shared/api-schema/ 是否已有接口契约
  3. 有则复用,无则在 Case-Database-Frontend-shared/ 中新建后再引用

6. 部署架构

用户端:   https://www.example.com       → Nginx → Case-Database-Frontend-user/dist/
管理端:   https://admin.example.com     → Nginx → Case-Database-Frontend-admin/dist/
API:      https://api.example.com       → Nginx → Hyperf (9501)
WebSocket: wss://api.example.com/ws    → Nginx → Swoole (9502)

最后更新: 2026-02-26