我们在Spartacus函数中使用NgRx存储来管理全局应用状态。使用NgRx在性能、更好的可测试性和易于故障排除方面具有明显的优势。除非有令人信服的理由不这样做,否则请始终使用Rgrx来管理功能开发中的状态。使用Store并不意味着我们需要缓存所有内容。缓存应该有目的和有意义的地方使用。通常,CMS数据是缓存的良好候选者,而应用程序数据则不是。如果你想从UI组件调用使用NgRx逻辑的功能,你应该实现一个外观服务功能来公开功能并将NgRx代码包装在核心库中。NgRx的复杂性被封装在核心库中。Facade服务可从核心库中获得。Facade服务公开了核心库功能,但它们在实现中隐藏了NgRx逻辑。内置的SpartacusUI组件不应包含NgRx逻辑。相反,UI组件应该调用皮肤服务函数。下面是在单元组件中使用服务类的示例:可以为每个页面更改站点上下文。对于不同的站点上下文,响应数据可能不同。此外,登录用户和匿名用户可能会看到不同的响应数据。在页面上工作时,请考虑用户可以通过登录或注销来更改其登录状态。尽量保持模块尽可能小。在大多数情况下,一个模块只有一个组件。此外,我们应该始终尝试减少模块依赖性。单元测试必须覆盖所有代码。关于端到端测试,基本的UI端到端测试以及可访问性端到端测试必须始终涵盖新的面向UI的功能。测试文件名应以e2e-spec.ts结尾。可以重用的公共函数应该被提取到不同的文件中,并且应该位于名为helpers的子目录中。这些文件应以文件扩展名.ts结尾。如果开发人员有多个用户流测试,请将它们分成单独的文件,以便它们可以并行运行。我们还建议将测试分组到具有相关名称的子目录中。
