Files
2026-07-25 23:45:09 +08:00

3.8 KiB

Vue Review 与交付清单

按变更风险使用清单。只勾选实际检查的项目,并将问题按严重性优先报告。

需求与范围

  • 实现与用户要求和验收标准一致。
  • 未混入依赖升级、API 迁移、全仓格式化或无关重构。
  • 已识别所有直接调用方、共享契约和回归范围。
  • 新抽象来自真实复用或清晰职责,而非假设需求。

Vue 与组件

  • API 风格和 Vue 版本与项目一致。
  • 组件名为多单词,文件和符号命名符合项目约定。
  • props、emits、slots、v-model 与 exposed API 明确且最小。
  • 未修改 props,未破坏单向数据流。
  • 模板简洁、无副作用,复杂逻辑已移出模板。
  • v-for key 稳定,未在同一元素混用 v-ifv-for
  • computed 纯净,watcher 有明确来源并清理副作用。
  • loading、empty、error、success、disabled 等适用状态完整。

TypeScript 与数据

  • 未用 any、无依据断言、@ts-ignore! 掩盖问题。
  • 外部数据、路由参数、storage 和环境变量已解析或校验。
  • DTO、领域模型和表单模型在需要时已分离。
  • 异步请求处理失败、复位、取消或过期响应。
  • 公共类型和 API 变更已检查全部调用方。

状态、路由与架构

  • 状态处于最小合理层级,没有不必要地放入 Pinia。
  • store state 最小、getter 纯净、action 边界清晰。
  • composable 依赖明确、返回面最小、资源可释放。
  • 页面路由按需懒加载,guard 没有承载不相关业务。
  • 前端权限控制未被误当成服务端授权。
  • 组件、store 与页面未直接复制底层 API 协议逻辑。

安全与隐私

  • 未将 secrets 或敏感 token 放入客户端代码、日志、测试或 VITE_*
  • 未渲染未经可信净化的外部 HTML。
  • URL、重定向、动态资源和用户输入按上下文处理。
  • 错误、日志、埋点和测试数据已脱敏。

可访问性与界面

  • 使用正确的原生语义元素。
  • 所有交互可键盘操作并有可见焦点。
  • 表单控件有 label,错误和状态不只依赖颜色。
  • 图标按钮、弹窗、动态通知和路由切换有适当可访问语义。
  • 已考虑窄视口、长文本、缩放、主题和减少动画。

性能与生命周期

  • 没有无证据的过早优化或滥用缓存。
  • 页面级大模块按需加载,新增依赖的 bundle 影响合理。
  • 大列表、大对象或高频更新路径已按风险检查。
  • timer、listener、observer、subscription 和请求在适当时机清理。
  • SSR 项目没有 hydration 不一致或跨请求状态污染。

测试与验证

  • 缺陷修复有回归证据。
  • 测试关注公开行为,不耦合内部实现。
  • 关键成功、失败、空、加载和边界分支有相称覆盖。
  • 已运行适用的定向测试、lint、typecheck、测试套件、build 或 E2E。
  • 未运行或失败的检查已准确披露,不推测通过。

Review 输出格式

先报告问题,再给摘要。每个问题包含:

严重性 + 文件与行号
→ 可触发的具体场景
→ 对用户或系统的影响
→ 最小修复方向

严重性建议:

  • P0:可造成安全事故、数据破坏或系统不可用,必须立即阻断。
  • P1:常见路径中的明确功能错误、权限问题或严重回归,合并前修复。
  • P2:边界条件缺陷、可维护性风险或缺失的重要测试,应尽快修复。
  • P3:低风险一致性、可读性或非阻断改进。

若未发现可操作问题,明确说明“未发现问题”,并列出已检查范围与仍未验证的风险。