SAP Spartacus module 层级结构设计的一种实践
Reference App Structure
這個(gè)推薦的 Spartacus 應(yīng)用程序結(jié)構(gòu)旨在作為您設(shè)置自己的 Spartacus 應(yīng)用程序時(shí)的參考。
Spartacus 是一個(gè) Angular 庫(kù),這意味著它可以在 Angular 應(yīng)用程序中單獨(dú)使用,也可以集成到現(xiàn)有的 Angular 項(xiàng)目中。相反,您可以將任何其他 Angular 解決方案或庫(kù)添加到您的 Spartacus 項(xiàng)目中。
Spartacus 本身帶有多個(gè)層和概念,以及一些可以延遲加載開(kāi)箱即用的較小特征庫(kù)。自定義和第三方代碼進(jìn)一步增加了復(fù)雜性,您最終可能會(huì)得到難以維護(hù)的模塊,因?yàn)樗鼈儗⑻噙@些元素混合在一起。
這可以通過(guò)定義和遵守標(biāo)準(zhǔn)化結(jié)構(gòu)來(lái)解決,例如 Spartacus 參考應(yīng)用程序結(jié)構(gòu)。擁有標(biāo)準(zhǔn)化結(jié)構(gòu)還可以更輕松地將新開(kāi)發(fā)人員納入您的項(xiàng)目、處理外部支持案例以及進(jìn)行審計(jì)。
通過(guò)使用 Spartacus 參考應(yīng)用程序結(jié)構(gòu),您可以從每個(gè)主要 Spartacus 版本提供的自動(dòng)遷移中獲益最多,同時(shí)還保持添加自定義的靈活性,并在這些自定義之上構(gòu)建新功能。使用參考應(yīng)用程序結(jié)構(gòu)還可以為 3.0 版本后移入單獨(dú)庫(kù)的功能利用代碼拆分。
要查看使用參考應(yīng)用程序結(jié)構(gòu)的工作示例,請(qǐng)參閱此存儲(chǔ)庫(kù)。
Spartacus Module
該 module 導(dǎo)入 B2C 或者 B2B 配置 module,以及 BaseStorefrontModule 和 SpartacusFeaturesModule:
導(dǎo)出 BaseStorefrontModule.
注意,雖然 Angular Router 和 NgRx 都是 Spartacus 使用的,但是這些都會(huì)影響全局應(yīng)用,所以它們被保存在 SpartacusModule 之外,直接導(dǎo)入到 AppModule 中。
SpartacusModule 由以下部分組成:
- BaseStorefrontModule,它封裝了大多數(shù) Spartacus 應(yīng)用程序通常需要的核心 Spartacus 導(dǎo)入。
BaseStorefrontModule 直接從@spartacus/storefront 導(dǎo)入。
- SpartacusFeaturesModule,它封裝了 Spartacus 功能。
- SpartacusConfigurationModule,它封裝了通用的 Spartacus 配置。
在大多數(shù)情況下,Spartacus 模塊不會(huì)被修改,因?yàn)楦耐ǔ7庋b在配置模塊或功能模塊中。
下面是 SpartacusModule 的實(shí)現(xiàn):
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 中。 將它們保存在功能模塊中有助于保持良好的關(guān)注點(diǎn)分離,因此通常建議這樣做,但如果有助于解決特定問(wèn)題(例如,通過(guò)使用 env 更改配置)。
Spartacus Features Module
SpartacusFeaturesModule 旨在輕松管理所有非核心 Spartacus 功能,包括靜態(tài)加載和延遲加載。 它充當(dāng)所有功能的入口點(diǎn),理想情況下,這些功能被包裝到自己的獨(dú)立功能模塊中。
在早期的 3.x 次要版本中,SpartacusFeaturesModule 可能看起來(lái)臃腫而忙碌,但隨著每個(gè)連續(xù)的發(fā)布,它應(yīng)該變得更加簡(jiǎn)潔,因?yàn)榕⒋蟛糠止δ芤频絾为?dú)的庫(kù)中。
例子:
Specific Feature Modules
理想情況下,可以將一個(gè)完整的功能封裝到一個(gè)特定的功能模塊中。該模塊可以包含與功能相關(guān)的配置以及自定義。
以下是具有延遲加載配置的功能模塊的示例:
FeatureModule eager 加載輕量級(jí)的 QuickOrderRootModule,然后使用延遲加載,去處理包含了重量級(jí)的 Service 和 Component 實(shí)現(xiàn)的 QuickOrderModule.
某些 feature module 的啟用與否,通過(guò)環(huán)境變量來(lái)決定:
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
總結(jié)
以上是生活随笔為你收集整理的SAP Spartacus module 层级结构设计的一种实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 黎明杀机进不去出怎么办 出现应用程序错误
- 下一篇: SAP Spartacus 在 Gith