基于 WEB-UI-Development-Guide 标准的整体升级,并更名 LokiDeploy → opsx-loki。 前端(Gin+React+shadcn/ui): - 按 02/07 章重构:页面域化拆分(无超 400 行文件)、PageContainer/ListQuery、 反馈分级(成功静默/失败 toast/危险确认)、401 单飞刷新+队列重放 - 暗色模式(next-themes)+ 语义 Token(--primary 品牌色/success/warning/info) - 部署向导(状态推导四步:环境→存储→Loki→采集,内嵌表单闭环) - 日志查询页:LogQL 标签构建器/拖拽直方图/日志上下文/Live Tail/查询历史 - 按用户+标签策略的查询授权(服务端强制合并策略) 后端(Go+Gin+JSON DB): - 简单用户管理(仅 admin,无 RBAC)+ TokenVersion 会话吊销 + 登录 IP 限流 - LDAP 接入:配置(AES 加密存储/hasPassword 脱敏)/测试连接/批量导入/登录 - 存储配置测试连接(SigV4 零依赖)+ 桶不存在自动创建 - Loki 三模式部署修复:SSH 密钥认证、3.x 配置模板、ruler 对象存储嵌套块、 凭证解密、孤儿 deploying 状态恢复、Grafana 部署(可选默认关)+面板导入 - DaemonSet 采集纯 YAML(去 helm 依赖)+ DNS 自愈回退 ClusterIP + 集群名标签 - 日志查询代理:cluster-svc 经 kube-apiserver proxy/url 直连 + cursor 翻页 - 统一 log 命名空间;部署就绪探活;Grafana 访问地址自动记录 修复:run.sh 增量编译检测、Sanitized 脱敏补全、LokiDeployment Update 白名单、 健康检查 CreatedAt 零值等 10+ 存量 bug。 数据兼容:DB 沿用旧 lokideploy.json(新名优先);localStorage 一次性迁移; HKDF 加密前缀保留(已加密凭证不受影响)。
14 KiB
打造高质量 Web 管理端前端 — 开发标准
基于 vue-vben-admin(v5,★★★★★ Vue 标准标杆)、ant-design-pro(v6,★★★★★ React 标准标杆)、
soybean-admin(v2.3,★★★★☆ 强烈推荐)、vue-pure-admin(v7,★★★★☆ 推荐)四大纯前端标杆提炼,
gin-vue-admin(★★☆☆☆ 仅作全栈功能对照)。生成时间:2026-10-22 | 修订:2026-10-22 定位为通用开发标准(去项目化)
📖 文档定位(先读这一段)
本文件是一份前端开发标准(Standard),不是教程:
- 用途:放入新项目仓库(如
docs/,并被 AGENTS.md / CLAUDE.md 引用),供 AI 编程助手与开发者阅读——AI 在编码、Review、重构时以此为基准对比并优化目标代码;与本文冲突的既有代码即为待改进项。 - 范围:Vue 3 与 React 的管理端 / 中后台 Web 前端(新项目优先);后端为 Gin / FastAPI 等任意 REST 服务均可——本标准只约定前端结构与 HTTP 契约,不绑定后端框架。
- 效力:条款分「必须 / 禁止」「推荐 / 避免」「可选」三级(见规范用语约定)。
- 证据:所有规范条目均标注出处(五项目的具体文件路径),不是凭空偏好。
- 用法:每章末尾有「AI 检查清单」——对比目标工程时逐项核对,不合格项即为优化任务。
📚 文档目录
| 序号 | 文件名 | 主题 | 核心内容 |
|---|---|---|---|
| 01 | 01-框架选型与技术栈.md |
框架选型 | 默认技术栈、UI 库对比、TS 采用策略、何时允许偏离 |
| 02 | 02-项目架构与目录结构.md |
项目架构 | 按功能域组织、页面 co-location、可裁剪分层、命名规范 |
| 03 | 03-请求层与数据流.md |
通信架构 | 统一响应契约、拦截器链、refresh 单飞队列、401 三范式、状态分层 |
| 04 | 04-路由与权限控制.md |
路由权限 | meta 规范、动态路由三模式、守卫链、RBAC 三粒度、菜单生成 |
| 05 | 05-布局系统与导航设计.md |
布局导航 | 布局分层、侧栏/标签页/面包屑、Keep-Alive 链路、页面模板 |
| 06 | 06-主题系统与视觉设计.md |
主题视觉 | 设计 Token、暗色模式、CSS 变量换肤、品牌定制、死 CSS 治理 |
| 07 | 07-组件设计与交互反馈.md |
组件交互 | 组件分层与晋升、命令式弹层、表单/表格范式、反馈分级、巨型文件拆分 |
| 08 | 08-工程化与质量保障.md |
工程实践 | Vite 配置、env 分层、lint 流水线、测试金字塔、性能、双端一致性、CI/CD |
🏆 核心结论速览
默认技术栈(新项目从这里开始)
| 端 | 默认栈 | 参照 |
|---|---|---|
| Vue 3 | Vue 3 + Vite + TypeScript(允许渐进)+ Element Plus + Pinia + Vue Router | 同栈实操对照 vue-pure-admin;架构对照 vben;规范写法对照 soybean |
| React | React + Vite + TypeScript strict + antd(重 CRUD 加 ProComponents)或 shadcn/ui + Zustand + TanStack Query | 工程与组件对照 ant-design-pro |
包管理器一律 pnpm(preinstall: only-allow pnpm)。偏离默认栈的条件与程序见 01 章 1.4。
单栈优先与双栈迁移策略
新项目 ──▶ 必须单栈(Vue 或 React 二选一)
迁移期(存量重构)──▶ 允许双栈并存,但必须遵守三条纪律:
1. 功能以主端为准,副端只做「对齐」同步,不抢先实现新功能
2. 契约先统一命名:token key / 主题 key / 权限码 / 响应格式,两端同名
(推荐命名空间:<app>.auth.token / <app>.theme.mode)
3. 不共享代码,只共享一份契约文档——不为双栈引入 monorepo
(monorepo 的适用性判断见 01 章 1.3;双端一致性细则见 08 章第五节)
参考项目定位(五项目三级)
首选参考 ★★★★★ —— Vue 看 vben,React 看 adp
| 项目 | 技术栈 | 定位 | 主要借鉴点 |
|---|---|---|---|
| vue-vben-admin | Vue 3 + TS monorepo(pnpm + Turbo) | Vue 标准标杆 | RequestClient + 预设拦截器、refresh 单飞队列、HSL Token + Tailwind 桥接、Preferences 偏好系统、三层布局架构、Vite 配置工厂、VITE_GLOB 运行时配置 |
| ant-design-pro | Umi Max + React 19 + antd v6 + ProComponents | React 标准标杆 | 响应契约与错误分级(ErrorShowType)、access 权限纯函数、页面 co-location 五件套、React Query 数据流、Biome + commitlint 工程底线、测试范式 |
强烈推荐 / 推荐 ★★★★☆ —— Vue 侧第二、第三参考
| 项目 | 技术栈 | 定位 | 主要借鉴点 |
|---|---|---|---|
| soybean-admin | Vue 3.5 + Naive UI + UnoCSS + Vite(轻 workspace) | 强烈推荐:代码规范与架构清晰 | @elegant-router 文件路由(目录即路由、类型即生成物)、请求五钩子契约 + flat 返回、store「index + shared」纯函数分离、hasAuth 极简权限、主题三端同步、最严格的 Lint/Commit 体系 |
| vue-pure-admin | Vue 3.5 + Element Plus + Tailwind v4(单包) | 推荐:干净轻量,有官方精简版 thin | 页面内聚五件套(index + form + utils/hook)、PureHttp 196 行请求类、ReDialog 命令式弹窗、EP↔Tailwind 变量桥接、两级按钮权限(v-auth/v-perms)、中文注释密度极高 |
仅作对照 ★★☆☆☆ —— 功能参考,不作前端标准
| 项目 | 技术栈 | 定位 | 可借鉴的模式 |
|---|---|---|---|
| gin-vue-admin | Vue 3 + Element Plus + Pinia + Vite(Gin 全栈) | Gin 全栈闭环 / 后端对接示例 | 后端菜单→import.meta.glob 动态路由、defineOptions name 与 keep-alive 链路、loading 防抖计数器 |
gva 的价值在于「Gin 后端 + Vue 前端」同仓配套的全栈闭环,适合做整体功能对照;
其前端工程化、代码规范整体弱于上面 4 个纯前端项目(拦截器return error未 reject、EP 全量引入、无测试)。
前端实现分歧时以 vben(架构)/ soybean(规范)/ pure(同栈 EP 实操)为准,gva 只当功能实现方式对照,前端写法不照搬。
按维度查哪个项目
| 维度 | 优先看 | 说明 |
|---|---|---|
| 目录结构与分层 | vben > soybean > pure | vben monorepo 分层最值得学;soybean 文件路由清晰;pure 传统但干净 |
| 请求封装 | vben / soybean / pure | 错误处理、Token 刷新、类型定义三家都成熟,见 03 章对照 |
| 权限系统 | vben > soybean > pure | vben 动态路由 + 细粒度最完整;soybean 静态/动态一键切换;pure 两级按钮权限 |
| Lint / Commit 规范 | vben / soybean | 配置最严格完整,直接抄它们的配置文件 |
| 组件二次封装 | vben / pure / adp | vben schema 驱动且多 UI;pure hook + 命令式弹窗实用;adp ProTable/ProForm 是 React 标杆 |
| TypeScript 类型组织 | vben / soybean / adp | 类型集中、接口返回类型完整;soybean 的全局 namespace + 键级类型最易迁移到 JS 工程 |
管理端前端十大黄金法则
┌────────────────────────────────────────────────────────────────┐
│ 01. 一切 IO 走统一请求层 —— 组件不直接碰 axios/fetch │
│ 02. 响应契约全局唯一 —— code/data/msg + 错误分级 │
│ 03. 401 只有一个入口 —— 单飞刷新 + 队列重放,不竞态 │
│ 04. meta 驱动一切 UI 行为 —— 菜单/缓存/权限/标题单源维护 │
│ 05. 权限三态 —— 不可见 / 可见但 403 / 放行 │
│ 06. 页面私有代码不出页面目录 —— 复用第三次才晋升公共组件 │
│ 07. 反馈分级、少弹框 —— 成功静默、失败必现、危险确认 │
│ 08. 换肤只改 CSS 变量 —— 不重编译、不引第二套样式系统 │
│ 09. 列表/表单/详情有模板 —— 新页面从模板起步,不自由发挥 │
│ 10. 双栈契约优先 —— 同产品双端实现时 key、权限码、 │
│ 响应格式两端同名 │
└────────────────────────────────────────────────────────────────┘
质量红线(违反即技术债)
- 单文件组件 ≤ 400 行(视图)/ ≤ 300 行(工具、请求层),超限必须拆分
- 样式必须有唯一入口引用链,无入口的 CSS 一律删除(存量工程常见 2000+ 行死 CSS 的考古层)
- 生产构建零 console.log,尤其禁止打印 token 片段
- 组件不绕过 API 层直接调用请求实例
- 文档与实现同 PR 更新,禁止「描述已删除组件」的漂移文档
规范用语约定(必须遵守 vs 推荐)
| 标记 | 含义 | 违反后果 |
|---|---|---|
| 必须 / 禁止 | 强制规范(MUST / MUST NOT) | Code review 拒绝,视同 bug |
| 推荐 / 避免 | 默认采纳(SHOULD / SHOULD NOT),允许有充分理由的例外 | 例外需在 PR 描述中说明原因 |
| 可选 | 按需采用(MAY) | 无 |
正文中加粗的「必须 / 禁止」条款为强制项;各章「AI 检查清单」是带优先级(P0/P1/P2)的对比执行队列。
文档维护与更新规则
- 实现与文档不一致 = 文档 bug,同一 PR 修复(详见 08 章文档治理)
- 参考项目大版本升级(vben / soybean / pure / adp)后,复核对应章节引用的证据文件路径
- 新增规范先以「推荐」落地,被 ≥2 个模块实际验证后再升级为「必须」
- 修订历史以 git commit 为准
🎯 适用场景
- 🏗️ 可裁剪底座 / 脚手架 — 壳 / 系统 / 示例三层,fork 即用
- 🖥️ 管理后台 / 中台 — 用户、RBAC、审计、系统设置等系统级页面
- 📊 运维监控平台 — 仪表盘、指标图表、实时日志(WebSocket/SSE)
- ⏰ 任务调度控制台 — 定时任务 CRUD、执行历史、手动触发
- 🔄 双栈迁移工程 — Vue→React 或反向迁移期间的对照参照
📐 与兄弟指南的关系
| 指南 | 领域 | 分界 |
|---|---|---|
GUI-Development-Guide |
Electron/Tauri 桌面端 | 窗口、标题栏、IPC、自动更新 |
CLI-Development-Guide |
Go 命令行 / TUI / Agent | Cobra、Bubble Tea、审批流 |
| 本指南 | 浏览器 Web 管理端 | 请求层、路由权限、布局主题、组件工程 |
三份指南共享同一套写作范式:每个专题按「原理 → 标杆代码 → 最佳实践 → AI 检查清单」四层展开。
💡 阅读建议:开发者先通读本文件,写新页面前读 05(页面模板)和 07(组件规范);搭新模块前读 02(架构)和 04(路由权限);排查线上问题读 03(请求层)和 08(工程化)。
AI 助手:编码前读 02/04/05/07;Review 与重构时按各章末「AI 检查清单」逐项对比目标代码,不合格项即输出为优化建议。
查阅标杆实现时:Vue 架构问题对照 vben、规范写法对照 soybean、同栈(Element Plus)实操对照 pure、React 问题对照 adp,gva 仅作功能对照。