SAP Spartacus 的工作原理与 Hybris Accelerator 不同。SAP 不建议直接复制 Spartacus library 的源代码并在源代码级别上进行修改,这会破坏 Spartacus 的可升级性。 正确的做法,应该将 Spartacus 用作库并使用其他方式(例如依赖注入、组件映射、outlet)来更改其行为。
正确的做法示例:
避免 outlet 的滥用
outlet 是 Spartacus 定制化的一种强大方式。我们在利用这个有用工具进行项目开发时,也需要清楚的认识到它的一些局限性
(1) 我们无法通过 CMS 来编辑 outlet
(2) outlet 如果使用不当,可能会造成潜在的性能问题
在使用 outlet 之前,我们可以先进行评估:这个需要使用 outlet 完成的需求,可以通过 Component mapping 实现吗?
避免使用错误的 recipe module
Spartacus 提供了所谓的配方模块(recipe module),有点类似 Commerce Cloud 后台的 installation recipe. B2cStorefrontModule 是一个典型的例子,它为 B2C 商店提供了一个基本实现。
如果我们的项目需求,是实现一个简单的商店并且期望可以重用大部分内置功能,那么它是一个完美的选择。 但是,如果打算进行一些更深入的自定义,则应考虑使用另一个模块,例如 StorefrontModule 甚至 StorefrontFoundationModule.
选择合适的配方模块可以提高性能、更好地控制代码库和更简洁的代码。
Spartacus 本身带有几个层和概念,以及许多可以开箱即用延迟加载的较小功能库。
B2cStorefrontModule 是 B2C 实施的初始店面。 它可以使用配置和插座轻松定制。 但是,当项目增长并高度自定义时,使用 StorefrontModule 可能会更有效。 这样我们就可以更细粒度地 import Spartacus 的 library.