审查 Next.js App Router 代码库,检查 React Server Component 边界错误、请求瀑布、客户端/服务端反模式以及 Core Web Vitals 风险...
Next.js App路由器审计. 在Next.js App路由器中查找影响大正确性和性能问题.codebase,按严重程度排名,每个代码都有特定的固定.是一项面向实际任务的技能,主要用于Combine the bunded.scanner (fa).。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
识别 Next.js App Router 代码库中高影响的正确性与性能问题,按严重程度排序,每个问题均附带具体修复建议。结合打包好的扫描器(快速、机械式)与有针对性的手动审查(需人工判断,扫描器无法替代)。
该扫描器无任何依赖,仅读取源文件。将其指向项目根目录或 app/ 目录即可:
node scripts/audit.mjs /path/to/project # 生成人类可读报告 + 得分 node scripts/audit.mjs /path/to/project --json # 生成机器可读输出,适用于 CI 或后续处理
扫描器会自动定位 app/(或 src/app/)目录,遍历所有 .tsx/.ts/.jsx/.js 文件,并报告 ERROR / WARN / INFO 级别问题,包含 file:line 位置、原因说明及具体修复建议。若存在任意 ERROR,进程退出码非零,因此可直接集成至 CI 流程。
当前支持检测的问题如下:
| 规则 | 严重程度 | 为何重要 |
|---|---|---|
client-route-no-metadata |
ERROR | 启用 "use client" 的页面或布局组件会静默丢弃 metadata —— SEO 标签永远不会被注入到 HTML 中。 |
legacy-next-head |
ERROR | next/head 在 App Router 中完全失效 —— 其所声明的标签永远不会出现在 中。 |
legacy-next-image |
WARN | next/legacy/image 保留了旧版易引发布局偏移(layout shift)的行为。 |
needless-use-client |
WARN | 在未使用任何 React Hook、事件处理器或浏览器 API 的情况下声明 "use client" —— 无谓地向客户端发送 JavaScript。 |
client-fetch-in-effect |
WARN | 在 useEffect 中发起数据请求会引入一次额外的渲染往返;应将该逻辑迁移至服务端执行。 |
raw-img |
WARN | 直接使用 标签跳过了 next/image 提供的尺寸优化与懒加载能力 —— 将导致 CLS 与 LCP 指标恶化。 |
unoptimized-font |
WARN | 通过 或 @import 加载字体属于渲染阻塞行为;应改用 next/font。 |
page-missing-metadata |
WARN | 异步页面导出未定义 metadata 或 generateMetadata。 |
dangerous-html |
WARN | 使用 dangerouslySetInnerHTML —— 若内容未经净化,存在 XSS 风险。 |
request-waterfall |
INFO | 存在 ≥2 个顺序 await 的 fetch 调用,且未使用 Promise.all 并发处理。 |
no-streaming-fallback |
INFO | 异步页面缺少 loading.tsx 或 Suspense 边界 —— 无法实现流式渲染(streamed shell)。 |
force-dynamic |
INFO | 路由显式禁用了静态生成(SSG)或增量静态再生(ISR) —— 请确认此行为确属有意为之。 |
large-client-component |
INFO | 大型 Client Component 将完整打包并发送至浏览器。 |
该扫描器基于启发式规则(正则表达式匹配,非完整类型检查):请将所有发现视为强线索,务必逐条对照源码确认后再标记为已修复。
阅读 reference/checklist.md,并逐一验证需要深入理解的项目:
"use client" 边界是否已尽可能下移到组件树底层?是否存在服务端专属敏感信息(如 API Key、DB Client 实例)被意外导入客户端模块的情况?fetch、unstable_cache 或 revalidate 配置,是否准确反映了对应数据所需的时效性?过度缓存将导致陈旧内容上线;缓存不足则严重拖慢 TTFB。generateStaticParams / ISR 应用范围 —— 动态路由是否已在可行范围内完成预渲染?revalidatePath / revalidateTag,而非通过客户端 fetch 调用路由处理器?报告结构应优先列出所有 ERROR,其次为 WARN,最后是影响力最高的若干 INFO 条目。对每项问题,须明确标注:file:line、一句话说明其实际影响、以及可落地的具体修复方式(通常只需极小 diff)。结尾处应汇总整体得分,并列出三项“投入产出比”(effort-to-impact ratio)最优的修改。切勿罗列全部 INFO —— 请审慎筛选、精炼呈现。
node_modules/next/dist/docs/ 中的官方文档,切勿凭经验假设。由 Datagrove 构建与维护 —— 一家专注于打造高性能、架构优良的 Next.js 网站的荷兰 Web 开发机构。如需专业审计或重构服务,欢迎联系 Datagrove。
相关专题
热门下载
相关下载
精品课程
共39课时 | 5.4万人学习
共101课时 | 21.1万人学习
共39课时 | 4.9万人学习