当前位置: 首页 > Web前端 > HTML5

SAPSpartacus模块层次结构设计实践

时间:2023-04-05 13:26:11 HTML5

ReferenceAppStructure此推荐的Spartacus应用程序结构旨在作为设置您自己的Spartacus应用程序时的参考。Spartacus是一个Angular库,这意味着它可以在Angular应用程序中独立使用,也可以集成到现有的Angular项目中。相反,您可以将任何其他Angular解决方案或库添加到您的Spartacus项目中。Spartacus本身带有多个层和概念,以及一些可以延迟加载的较小的功能库。自定义代码和第三方代码进一步增加了复杂性,您最终可能会得到难以维护的模块,因为它们将太多这些元素混合在一起。这可以通过定义和遵守标准化结构来解决,例如Spartacus参考应用程序结构。拥有标准化的结构还可以让新开发人员更容易加入您的项目、处理外部支持案例和进行审计。通过使用Spartacus参考应用程序结构,您可以从每个Spartacus主要版本提供的自动迁移中获益最多,同时仍然保留添加定制和在这些定制之上构建新功能的灵活性。使用参考应用程序结构还可以利用代码拆分功能将其移至3.0后的单独库中。要查看使用参考应用程序结构的工作示例,请参阅此存储库。SpartacusModule此模块导入B2C或B2B配置模块,以及BaseStorefrontModule和SpartacusFeaturesModule:exportBaseStorefrontModule。注意,虽然AngularRouter和NgRx都被Spartacus使用,但是这些都会影响到全局应用,所以它们存储在SpartacusModule之外,直接导入到AppModule中。SpartacusModule由以下部分组成:BaseStorefrontModule,它封装了大多数Spartacus应用程序通常需要的核心Spartacus导入。BaseStorefrontModule直接从@spartacus/storefront导入。SpartacusFeaturesModule,它封装了Spartacus的特性。SpartacusConfigurationModule,封装了常用的Spartacus配置。在大多数情况下,不会修改Spartacus模块,因为更改通常封装在配置模块或功能模块中。以下是SpartacusModule的实现:import{NgModule}from'@angular/core';import{BaseStorefrontModule}from'@spartacus/storefront';import{SpartacusConfigurationModule}from'./spartacus-configuration.module';import{SpartacusFeaturesModule}from'./spartacus-features.module';@NgModule({imports:[BaseStorefrontModule,SpartacusFeaturesModule,SpartacusConfigurationModule,],exports:[BaseStorefrontModule],})exportclassSpartacusModule{}Spartacus配置模块该模块包含所有全局配置元素.特定于功能的配置可以保存在功能模块或SpartacusConfigurationModule中。将它们保留在功能模块中有助于保持良好的关注点分离,因此通常建议这样做,但如果它有助于解决特定问题(例如,通过使用env更改配置)。Spartacus功能模块SpartacusFeaturesModule旨在轻松管理所有非核心Spartacus功能,包括静态加载和延迟加载。它充当所有功能的入口点,理想情况下将其包装到自己的独立功能模块中。SpartacusFeaturesModule在早期的3.x次要版本中可能显得臃肿和忙碌,但随着每个后续版本的发布,它应该变得更干净,因为我们努力将大部分功能移到一个单独的库中。示例:特定的功能模块理想情况下,一个完整的功能可以封装到一个特定的功能模块中。该模块可以包含与功能相关的配置以及自定义。下面是一个采用懒加载配置的特性模块的例子:FeatureModule预加载轻量级的QuickOrderRootModule,然后使用懒加载处理包含重量级Service和Component实现的QuickOrderModule。某些功能模块是否开启,由环境变量决定:更多Jerry原创文章,尽在:《汪子熙》: