SAP Spartacus module 层级结构设计的一种实践
Reference App Structure
這個推薦的 Spartacus 應用程序結構旨在作為您設置自己的 Spartacus 應用程序時的參考。
Spartacus 是一個 Angular 庫,這意味著它可以在 Angular 應用程序中單獨使用,也可以集成到現有的 Angular 項目中。相反,您可以將任何其他 Angular 解決方案或庫添加到您的 Spartacus 項目中。
Spartacus 本身帶有多個層和概念,以及一些可以延遲加載開箱即用的較小特征庫。自定義和第三方代碼進一步增加了復雜性,您最終可能會得到難以維護的模塊,因為它們將太多這些元素混合在一起。
這可以通過定義和遵守標準化結構來解決,例如 Spartacus 參考應用程序結構。擁有標準化結構還可以更輕松地將新開發人員納入您的項目、處理外部支持案例以及進行審計。
通過使用 Spartacus 參考應用程序結構,您可以從每個主要 Spartacus 版本提供的自動遷移中獲益最多,同時還保持添加自定義的靈活性,并在這些自定義之上構建新功能。使用參考應用程序結構還可以為 3.0 版本后移入單獨庫的功能利用代碼拆分。
要查看使用參考應用程序結構的工作示例,請參閱此存儲庫。
Spartacus Module
該 module 導入 B2C 或者 B2B 配置 module,以及 BaseStorefrontModule 和 SpartacusFeaturesModule:
導出 BaseStorefrontModule.
注意,雖然 Angular Router 和 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], }) export class SpartacusModule {}Spartacus Configuration Module
該 Module 包含所有全局的配置元素。
特性特定的配置可以保存在特性模塊中,也可以保存在 SpartacusConfigurationModule 中。 將它們保存在功能模塊中有助于保持良好的關注點分離,因此通常建議這樣做,但如果有助于解決特定問題(例如,通過使用 env 更改配置)。
Spartacus Features Module
SpartacusFeaturesModule 旨在輕松管理所有非核心 Spartacus 功能,包括靜態加載和延遲加載。 它充當所有功能的入口點,理想情況下,這些功能被包裝到自己的獨立功能模塊中。
在早期的 3.x 次要版本中,SpartacusFeaturesModule 可能看起來臃腫而忙碌,但隨著每個連續的發布,它應該變得更加簡潔,因為努力將大部分功能移到單獨的庫中。
例子:
Specific Feature Modules
理想情況下,可以將一個完整的功能封裝到一個特定的功能模塊中。該模塊可以包含與功能相關的配置以及自定義。
以下是具有延遲加載配置的功能模塊的示例:
FeatureModule eager 加載輕量級的 QuickOrderRootModule,然后使用延遲加載,去處理包含了重量級的 Service 和 Component 實現的 QuickOrderModule.
某些 feature module 的啟用與否,通過環境變量來決定:
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的SAP Spartacus module 层级结构设计的一种实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黎明杀机进不去出怎么办 出现应用程序错误
- 下一篇: SAP Spartacus 在 Gith