共计 2000 个字符,预计需要花费 5 分钟才能阅读完成。
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 的原创文章,尽在:” 汪子熙 ”: