关于 SAP Spartacus 重定向部分外部 url 到后台系统的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 SAP Spartacus 重定向部分外部 url 到后台系统的问题相关的知识,希望对你有一定的参考价值。

许多客户将采用逐步(route-by-route)的方式从 Accelerator 迁移到 spartacus,这意味着客户将使用不同的系统在同一域中同时驱动部分店面。

我们希望支持具有可配置的路由,并可选择从 SPA 中退出并重新加载页面以允许后端驱动的响应(基于 URL 模式)。

只要我们在 SPA 的范围内,我们只执行 interal 导航,因为使用了 Angular 的 routerLink,按照设计它不会进行完全重新加载。

但是,我们可以使用 Guard 定义虚拟路由,强制执行指定配置路径的完全重新加载。

为了更容易测试(不要进入闪烁页面重新加载的无限循环),通过扩展 External Routes Guard 来延迟页面重新加载:

@Injectable()
export class CustomRoutingMigrationGuard extends ExternalRoutesGuard
  redirect(route, state) 
    console.log(migration guard activated, redirect in 5 seconds);
    setTimeout(() => 
      super.redirect(route, state);
    , 5000);
  

在 app Module 里定义这个 Guard:

 providers: [
     provide: ExternalRoutesGuard, useClass: CustomRoutingMigrationGuard ,
  ]

测试:

routing: 
    internal: [
          /**,
          !/cart,
          !/?,
          !/???,
          !/login,
          !/login/register,
          !/product/*/*,
          !/Open-Catalogue/**/p/**,
    ]
  

验证下面列出的页面是否执行重新加载(由于缺少后端规则而发生无限循环的重新加载,这些规则通常会根据 URL 其模式呈现不同的店面):

https://github.com/SAP/spartacus/issues/12292

Angular 预配置了 webpack 开发服务,该服务使用开发人员可以配置的代理服务器。如果您有本地运行的 Accelerator,可以为那些应该链接到本地 Accelerator 的路由使用代理配置。 我们需要记录以下内容:

  • 使用代理配置文件配置 angular.json 文件
  • 记录一个示例代理配置
  • 记录一个 package.json 脚本以便于启动

我们还可以使用本地 nginx 记录替代设置。

为了实现这两个店面都在同一个域下,需要设置一个 apache 虚拟主机或其他东西(假设 electronics.local 指向 9002 和 4200)。

以上是关于关于 SAP Spartacus 重定向部分外部 url 到后台系统的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于 SAP Spartacus CSR fallback 之后,是否仍然会继续进行 SSR 的处理

SAP Spartacus 如何获得当前渲染页面的 CMS 元数据

SAP Spartacus Reference App Structure

SAP Spartacus 表单个性化

SAP Spartacus 表单个性化

如何在 SAP Commerce Cloud Portal 构建和部署 SAP Spartacus Storefront