22 lines
1.3 KiB
Markdown
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。
|