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

举报
汪子熙 发表于 2023/04/10 10:44:12 2023/04/10
【摘要】 在 Spartacus 4.0 中,通过从原始 storefront 库中提取 checkout 功能,创建了一个新的 checkout library 实现。然而,这个新的库只有一个包含所有结帐流程的入口点,即使它们未被使用(例如scheduled replenishment flow)。但是,在 Spartacus 5.0 中,checkout 库已进一步分离为不同的业务逻辑功能,目的是...

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。