angular - OccAdapters 和 Services 之间的使用差异是什么?

标签 angular sap-commerce-cloud spartacus-storefront

我有一个关于斯巴达克斯的问题。我用的是20.05版本。

this.occCartAdapter.load('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="057d7d7d7d7d456268646c692b666a68" rel="noreferrer noopener nofollow">[email protected]</a>', '00001002').subscribe(data => {
  console.log(data);
});

this.cartService.getActive().subscribe(data => {
  console.log(data);
});

这两个函数最终得到相同的结果。它们有什么区别?当我尝试从后端调试这些函数时,我只能捕获(调试)occCartAdapter。为什么 cartService 没有触发后端?

最佳答案

Spartacus 中有多个层负责加载、存储和公开后端数据。这是为了健康的分层架构以及细粒度的可扩展性。您可以在https://sap.github.io/spartacus-docs/connecting-to-other-systems/了解有关这些层的更多信息。 .

一般来说,cartService 代表购物车域的外观层,而 occCartAdapter 代表购物车域的默认 OCC 适配器。如果您想适应另一个系统,您可以覆盖/自定义适配器,而不必担心存储、公开等问题。

数据将流经所有这些层。所有域(产品、购物车、用户)都使用以下层:

-> component
    -> (component service)
        -> service (AKA facade) 
            -> ngrx-action 
                -> ngrx-effect
                    -> connector 
                        -> adapter
                            -> angular 
                                -> http client (angular)
                                    -> API (OCC)

不建议直接与较低级别的服务直接交互,因为中央存储不会知道数据。您将不再拥有集中存储数据的优势。

首先说的是,对于新功能,您绝对不需要复制这些层。这些层已部分到位,以实现细粒度的可扩展性,这对于您的自定义来说是不需要的。我建议的最小层是保存组件数据的(单例)服务。

关于angular - OccAdapters 和 Services 之间的使用差异是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63596666/

相关文章:

Angular 4未加载组件

javascript - 类型 'void' 的参数不可分配给类型 'Function' 的参数

sap-commerce-cloud - 如何让斯巴达克斯服务器端渲染在负载下执行?

java - Hybris 5 trail,入门

spartacus-storefront - SAP 斯巴达克斯 NullInjectorError : No provider for CmsComponentData

angular - 可观察到的错误消息 - 无法在订阅中捕获

angular - Angular&Electron-在默认浏览器中打开链接

java - Lombok 不会在 hybris 自定义组件中生成 getter

pagination - 如何更改斯巴达克斯产品列表页面上分页的默认产品数量?