Spartacus 4.0 升级到 5.0 后 checkout library 的设计变化

在 Spartacus 4.0 中,通过从原始 storefront 库中提取 checkout 功能,创建了一个新的 checkout library 实现。

然而,这个新的库只有一个包含所有结帐流程的入口点,即使它们未被使用(例如scheduled replenishment flow)。

但是,在 Spartacus 5.0 中,checkout 库已进一步分离为不同的业务逻辑功能,目的是使构建出的 Application Bundle 尺寸更小。

除了创建不同的入口点以减小 Application bundle 大小之外,NgRx 依赖项已大部分被删除(除了一些在事件侦听器中隔离的 NgRx 操作),这是通过将它们替换为 Commands and Queries 来完成的。

从 NgRx 转换为 Commands and Queries 的好处如下:

  1. 所有功能都在类中,因此更容易扩展。这一点与 NgRx 不同,在 NgRx 中,我们如果没有花费精力去拆除 Spartacus 中深度嵌套的 NgRx 模块,就无法真正扩展 reducer 或 Effect.

  2. 命令能够以更具 reactive 的特性去构建,并将执行结果作为同一方法调用的一部分返回。

  3. 和命令类似,监听loading、error、数据状态的变化都更简洁,只需要调用一个方法,查询一次就可以得到所有结果。

dismantling module是一种将软件系统中的功能模块分解为更小、更独立的部分的过程。在这个过程中,大型功能模块会被分解为更小的、更具体的子模块,每个子模块都有自己的职责和功能。

dismantling module有助于改善软件系统的可维护性、可重用性和可测试性。通过将大型功能模块拆分成更小、更独立的部分,可以使代码更易于理解、修改和维护。此外,子模块的复用性也得到了提高,因为它们可以被其他模块所使用。

在软件开发中,dismantling module通常是一个迭代过程,可以通过多次分解和重组模块来逐步改善软件系统的结构和质量。在这个过程中,开发人员需要仔细评估每个模块的职责和功能,并考虑如何将其拆分成更小、更具体的子模块。最终,通过不断的改进和优化,可以构建出高效、可维护和可扩展的软件系统。

猜你喜欢

转载自blog.csdn.net/i042416/article/details/129962600