网络日志

SAP 电商云 Spartacus UI 的 External Routes 设计明细

作为单页应用程序 (SPA),Spartacus 使用 Angular routerLink 指令,根据设计,该指令不会从后端的 Web 服务器中加载新的页面。 因此,Spartacus 通常只允许用户在应用程序本身内导航。 换句话说,Spartacus 通常只加载单页应用程序中的视图。

但是,如果您要从传统店面系统(例如 SAP Commerce Accelerator)逐步(和逐个路由)迁移到 Spartacus,则 Spartacus 中的外部路由功能允许您使用不同的系统来驱动不同的部分。 使用外部路由,开发人员可以指定从后端加载哪些路由,甚至可以将路由重定向到不同的域。

要使用 Spartacus 和另一个系统在同一个域中运行店面,您需要定义 URL 模式以区分两个店面系统。 这些模式应该应用于后端服务器、Spartacus 配置和 Angular Service Worker(启用 PWA 时)。

模式应按如下方式应用:

  • 访问深层链接时,后端服务器应提供 Spartacus 视图,或者应提供来自其他店面系统的页面。
  • 当使用 Angular routerLink 进行导航时,Spartacus 应该激活一个 SPA 路由,或者它应该从后端完全加载页面。
  • 启用 PWA 后,Angular Service Worker 会拦截导航请求。 当完全加载(或重新加载)页面时,Service Worker 应该返回缓存的单页应用程序的 index.html,或者 Service Worker 应该绕过缓存,以便后端可以服务该页面。

您可以通过导入 ConfigModule.withConfig() 为内部路由提供带有 URL 模式的配置。

URL 模式使用有限的 glob 格式,如下所示:

  • ** 匹配 0 个或多个路径段
  • * 匹配 0 个或多个字符,不包括 /
  • ? 只匹配一个字符,不包括 /
  • ! 是将模式标记为负数的前缀,这意味着仅包含与模式不匹配的 URL

例子:

在以下示例中,SPA 中仅呈现主页、购物车和产品详细信息页面,所有其他 URL 均从后端加载: