3.8 KiB
3.8 KiB
Vue Review 与交付清单
按变更风险使用清单。只勾选实际检查的项目,并将问题按严重性优先报告。
需求与范围
- 实现与用户要求和验收标准一致。
- 未混入依赖升级、API 迁移、全仓格式化或无关重构。
- 已识别所有直接调用方、共享契约和回归范围。
- 新抽象来自真实复用或清晰职责,而非假设需求。
Vue 与组件
- API 风格和 Vue 版本与项目一致。
- 组件名为多单词,文件和符号命名符合项目约定。
- props、emits、slots、
v-model与 exposed API 明确且最小。 - 未修改 props,未破坏单向数据流。
- 模板简洁、无副作用,复杂逻辑已移出模板。
v-forkey 稳定,未在同一元素混用v-if与v-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:低风险一致性、可读性或非阻断改进。
若未发现可操作问题,明确说明“未发现问题”,并列出已检查范围与仍未验证的风险。