accounts/docs/ui/static-export/cloud_iac.md

22 lines
1.3 KiB
Markdown

# Cloud IaC 静态化设计
## 页面范围
- `/cloud_iac`
- `/cloud_iac/[provider]`
- `/cloud_iac/[provider]/[service]`
## 数据来源
- `dashboard/lib/iac/catalog.ts` 提供所有 Provider 与服务分类。
- `public/_build/cloud_iac_index.json` 在构建前由 `scripts/export-slugs.ts` 导出 Provider / Service 组合。
## 静态导出策略
1. 在三个页面的模块顶端声明 `export const dynamic = 'error'`,禁止运行时回退到动态渲染。
2.`/cloud_iac/[provider]``/cloud_iac/[provider]/[service]` 中实现 `generateStaticParams()`,从 `cloud_iac_index.json` 读取静态参数并导出 `dynamicParams = false`
3. 使用 `cloud_iac_index.json``catalog.ts` 的静态常量渲染页面内容,避免请求数据库或外部 API。
4. 将任何 `generateMetadata` 的逻辑提前到模块作用域,生成一次性常量 `metadata`
## 子任务拆分
- **数据导出**:在 `scripts/export-slugs.ts` 中读取 `catalog.ts`,生成 Provider 和 Service 对应的 JSON 列表。
- **页面改造**:为三个页面补充 `dynamic = 'error'` 与静态参数生成逻辑,更新到使用 JSON 数据。
- **校验**:在 `scripts/check-build.js` 中增加对 `cloud_iac_index.json` 的完整性检查,确保 Provider 与 Service 数量均大于 0。