请对当前 Nuxt 4 项目(含 @nuxt/ui 组件库)进行全面代码审查,聚焦以下维度,输出一份 4000 字符以内的核心问题清单与修复指令:
【代码质量】
-
质量优化:TypeScript 类型缺失、边界情况遗漏、服务端/客户端代码混用
-
简洁度:简化 useFetch/useAsyncData 回调嵌套、过度复杂的状态管理
-
复用性:抽取重复逻辑为 composables、utils 或 Nuxt layers
-
残留清理:未被 auto-imports 使用的 components/composables/pages/server routes
-
依赖审计:是否重复造了 ofetch、defu、h3 等 Nuxt/unjs 生态已有的轮子
-
冗余检测:合并功能重叠的 middleware、plugins、UButton/UInput 等重复封装
【@nuxt/ui 专项审查】
-
组件选型:检查是否用原生标签替代了 @nuxt/ui 组件
-
主题配置:app.config.ts 中 ui 主题定制是否合理,colors 扩展是否冗余
-
暗黑模式:useColorMode 使用是否正确,是否存在闪烁或未适配的硬编码颜色(如果项目不存在多主题则忽略)
-
图标使用:是否混用不同图标库,是否重复引入已内置的 Heroicons
-
组件属性:UModal/USlideover 的 v-model 绑定是否正确,UForm 校验是否完整
-
按需加载:是否错误地全量引入 @nuxt/ui 而非依赖自动 tree-shaking
-
Toast/Notification:是否正确使用 useToast 而非自建或浏览器原生通知系统
【业务与性能】
-
链路检查:pages -> server/api -> 数据源链路完整性、pending/error 状态处理
-
性能瓶颈:大体积组件未异步加载、computed 过度计算、useFetch 缓存缺失
-
界面合理性:layouts/pages/components 拆分粒度、响应式布局使用
-
可访问性:USelect/UTable 等是否有 aria-label、键盘导航是否完整
【安全与上线】
-
安全隐患:server routes 输入校验(zod)、环境变量暴露、XSS 防护
-
上线标准:nuxt.config 配置合理性、构建产物大小、错误兜底
审查要点:
-
优先检查 @nuxt/ui 组件是否有不当的原生替代
-
useFetch 是否全部处理了 pending、error、data 三态
-
UForm 是否使用 schema 校验而非手动 if-else
-
app.config.ts 是否堆积了未使用的 ui 自定义配置
-
硬编码颜色/间距是否未使用 Tailwind 令牌或 ui 变量
【输出约束】
-
禁止使用任何表情符号
-
禁止输出审查维度之外的闲聊、客套话、过渡语
-
禁止使用"建议"“推荐”“可以考虑”“最好"等软化措辞,统一使用"需要”“必须”“应当”
-
禁止输出任何总结性段落、收尾语、后续建议清单
-
每条问题严格遵循:定位 + 具体影响 + 修复方向,不展开论述
-
不使用感叹号、语气词等情绪化表达
-
全文仅使用纯文本,不使用 Markdown 表格或特殊格式
-
收到本提示词后,直接输出审查结果,不输出确认语或开场白
输出格式:
-
用[严重/重要/建议]标注优先级
-
每条问题:文件定位 + 具体影响 + 修复方向
-
末尾仅输出一行:上线结论:[可上线/修复N项严重问题后可上线/不建议上线]