agilelabs-fx-docs main topics/frontend-hosting.md

前端托管

本页是 ClientApp 和多前端入口托管的主题页,聚合目录、路径、缓存和后端保护约定。正式规则请优先阅读 框架规范 / 前端项目规范框架规范 / 前端对接规范

适用场景

  • 与后端一起部署一个或多个前端应用。
  • 需要通过 ASP.NET Core 中间件统一托管静态资源与默认页。
  • 需要在前端入口前后插入鉴权、缓存或网关逻辑。

必须遵守

  • 所有前端构建产物都位于明确的 RootPath 下。
  • 每个应用显式声明 PublicPathDistPath,且路径以 / 开头。
  • UseClientApp() 放在明确的请求管道位置。
  • 敏感前端入口的保护由后端或网关负责,不依赖前端路由。
  • 新前端项目的样式栈、图标库、主题模式和项目级包源默认值必须与 前端项目规范 保持一致。
  • 前端对接的 JSON 字段和时间格式必须与正式前端契约规范保持一致。
  • 缓存策略以当前框架实现为准,不把默认行为误写成长期缓存。
  • UseClientApp() 前后涉及的认证、审计和反向代理规则必须在文档中写清楚。

推荐做法

  • 每个前端应用使用独立 PublicPath
  • 发布目录按应用划分,例如 ClientApp/AdminClientApp/Portal
  • 需要登录保护的入口,在 UseClientApp() 前后明确插入认证授权或网关保护。
  • 统一通过反向代理暴露外部路径,不在构建产物里硬编码运行环境 URL。
  • 本地联调用开发代理,生产环境只保留发布目录和路径映射。

常见坑

  • 多个前端构建产物铺在同一目录。
  • PublicPath 用相对路径。
  • UseClientApp() 放在会吞掉 API 请求的位置。
  • 认为“前端有登录页”就等于入口安全。

真实用例

  • gmandarin-backend:同一站点托管多个前端入口,并与自定义 UseStaticFiles(...) 缓存策略并存。

相关页面