1.3 KiB
1.3 KiB
Docs 页面静态化设计
页面范围
/docs/docs/[name]
数据来源
- Markdown 内容位于
dashboard/cms/content/,由scripts/scan-md.ts解析生成public/_build/docs_index.json。 - 下载路径映射由
public/_build/docs_paths.json提供。
静态导出策略
- 将
app/docs/page.tsx与app/docs/[name]/page.tsx顶部声明export const dynamic = 'error'。 - 使用
generateStaticParams()从docs_index.json读取所有slug,并导出dynamicParams = false。 - 在
app/docs/resources.ts中移除运行时fetch,改为读取静态 JSON 常量,确保构建期即可拿到完整数据。 - 将原有
generateMetadata动态逻辑转换为静态metadata常量。 - 所有时间展示改用
app/components/ClientTime.tsx,并在父级标记suppressHydrationWarning。
子任务拆分
- 数据脚本:编写
scripts/scan-md.ts解析 Markdown 并输出docs_index.json、更新docs_paths.json。 - 页面更新:改造两个页面以消费静态 JSON,同时添加静态参数逻辑。
- 组件调整:把
formatDate等服务端时间处理迁移至客户端组件。 - 构建校验:在
scripts/check-build.js中验证docs_index.json至少包含一个条目,且字段完整。