美文网首页js css html
关于 SAP Spartacus 重定向部分外部 url 到后台

关于 SAP Spartacus 重定向部分外部 url 到后台

作者: _扫地僧_ | 来源:发表于2022-10-30 11:35 被阅读0次

    许多客户将采用逐步(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 其模式呈现不同的店面):

    /cart
    /x
    /faq
    /abc
    /login
    /login/register
    /product/358639/DSC-N1
    /Open-Catalogue/Cameras/DigitalCameras/Digital-Compacts/NV10/p/553637

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

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

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

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

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

    相关文章

      网友评论

        本文标题:关于 SAP Spartacus 重定向部分外部 url 到后台

        本文链接:https://www.haomeiwen.com/subject/tgoktdtx.html