From 339695c85160643e07d7f01fab4149d3815d529f Mon Sep 17 00:00:00 2001 From: huangping Date: Tue, 19 May 2026 10:35:49 +0800 Subject: [PATCH] docs: add frontend framework design (10 sections: architecture, modules, layout, components, templates, dataflow, conventions) --- .../2026-05-19-frontend-framework-design.md | 665 ++++++++++++++++++ 1 file changed, 665 insertions(+) create mode 100644 docs/superpowers/specs/2026-05-19-frontend-framework-design.md diff --git a/docs/superpowers/specs/2026-05-19-frontend-framework-design.md b/docs/superpowers/specs/2026-05-19-frontend-framework-design.md new file mode 100644 index 0000000..1bc5877 --- /dev/null +++ b/docs/superpowers/specs/2026-05-19-frontend-framework-design.md @@ -0,0 +1,665 @@ +# CraftLabs 前端框架设计 v1.0 + +> 基于设计体系 `2026-05-19-design-system.md` 提炼的前端工程框架规范 +> 目标:统一架构、约束风格、加速开发、降低交接成本 +> 日期:2026-05-19 + +--- + +## 目录 + +1. [框架概述](#1-框架概述) +2. [技术栈](#2-技术栈) +3. [工程结构](#3-工程结构) +4. [核心模块](#4-核心模块) +5. [布局系统](#5-布局系统) +6. [组件体系](#6-组件体系) +7. [页面模板](#7-页面模板) +8. [数据流](#8-数据流) +9. [开发规范](#9-开发规范) +10. [构建与部署](#10-构建与部署) + +--- + +## 1. 框架概述 + +### 1.1 定位 + +CraftLabs 前端框架是基于 Vue 3 + Element Plus 的企业级 B2B 授权运营平台前端方案。在 Element Plus 之上注入品牌设计 Token,提供开箱即用的布局、组件、页面模板和开发约束。 + +### 1.2 核心原则 + +| 原则 | 说明 | +|------|------| +| **约定优于配置** | 路由、鉴权、API 封装、错误处理均有默认行为,开发者只需关注业务 | +| **Token 驱动** | 所有视觉属性通过 CSS 变量控制,换肤只需改 `theme.css` | +| **组件隔离** | 每个 `.vue` 文件自包含模板+逻辑+样式,` +``` + +### 7.2 Tree + 列表页 + +适用于:许可证管理 + +``` +结构: +
← display: flex + ← 左侧固定宽度 +
← flex: 1 + <统计卡片行> + <筛选栏 + 签发按钮> + <数据表格> +
+
+``` + +### 7.3 工作台 Dashboard + +适用于:首页 + +``` +结构: + <统计卡片行 4列> + <趋势图 + 待办列表 2列> + <快捷入口> +``` + +### 7.4 详情页 + +适用于:合同详情、交付详情、SN详情 + +``` +结构: + <返回按钮 + 页面标题> + <详情卡片> + 或 自定义 KV 布局 + + <关联数据卡片> (可选:审计事件、Callback关联) + <操作按钮行> +``` + +--- + +## 8. 数据流 + +### 8.1 请求生命周期 + +``` +用户操作(点击查询/新建/保存) + │ + ▼ +loading.value = true ← 显示加载态 + │ + ▼ +await apiFunction(payload) ← axios 自动注入 JWT Header + │ + ├─ 200: data → 更新响应式状态 + │ ElMessage.success("操作成功") + │ + ├─ 4xx: err → ElMessage.error(apiErrorMessage(e)) + │ 401 → 自动登出 + │ 403 → 提示无权限 + │ + └─ 5xx / Network Error → ElMessage.error("服务器错误") + │ + ▼ +loading.value = false ← 恢复交互 +``` + +### 8.2 状态分类 + +| 状态类型 | 存储位置 | 示例 | +|---------|---------|------| +| 页面级临时状态 | 组件内 `ref()` / `reactive()` | 表格数据、表单数据、loading | +| 跨页面持久状态 | Pinia `auth.js` | token、用户名、角色 | +| UI 状态 | 组件内 | dialogVisible、activeTab | +| URL 状态 | `route.query` / `route.params` | 分页页码、详情页 ID | + +--- + +## 9. 开发规范 + +### 9.1 新增页面检查清单 + +``` +□ 文件命名:PascalCaseView.vue +□ 使用