Spartacus是一种技术和架构(库发布方式vs模板发布方式,headlessvsembedded,AngularvsJSP技术栈)等方面.从Accelerator全面转变范式。因此,对于已经使用Accelerator的CommerceCloud客户,没有直接的方法从基于Accelerator的Storefront迁移到使用Spartacus库的Storefront。考虑到将基于Accelerator的店面迁移到Spartacus所涉及的时间和精力,SAP建议采用分阶段方法,将Spartacus的一些功能与基于Accelerator的店面混合,并在两者之间无缝切换。本文介绍了一个具体的混合使用SpartacusUI和AcceleratorUI的例子。技术实现基于斯巴达克斯外部路由的概念。首先,我在Spartacusapp模块的实现代码中添加了如下配置:provideConfig({routing:{internal:['/**','!/cart','!/**/p/**']}}),上述配置的语义是所有Storefronturl都由SpartacusAngular页面提供服务,但购物车页面和产品详细信息页面除外,它们由HybrisAccelerator页面呈现。否定操作由!上图中第83和84行的符号。我在localhost:4200启动Angular应用程序,然后localhost:4200/electronics-spa/en/USD/cart的url不受Spartacus路由控制,HybrisAccelerator需要服务这个url。我设置了另一个Web服务器,监听端口3000并提供urllocalhost:3000/electronics-spa/en/USD/cart。为此,我在Angular项目中新建一个配置文件proxy.conf.json,内容如下:{"/electronics-spa/en/USD/cart":{"target":"http://localhost:3000","secure":false,"logLevel":"debug"}}这样localhost:4200/electronics-spa/en/USD/cart会自动重定向到localhost:3000/electronics-spa/en/USD/cart通过AngularCLI。以上是所有需要的配置。在运行时,当客户点击Spartacus购物车图标时,它会自动打开由Accelerator监听端口3000实现的购物车页面。此外,绕过ServiceWorker缓存并让后端在完整页面加载(或完整页面重新加载)后提供响应),开发者需要定义ServiceWorker的ngsw-config.json配置的navigationUrls属性,需要指定URLpattern。
