Spartacus Storefront 里的 currency 和 language 的 store 设计(2)

简介: Spartacus Storefront 里的 currency 和 language 的 store 设计

在 Spartacus 里,我们使用的是一个 InjectionToken:



image.png



export const reducerToken: InjectionToken<ActionReducerMap<SiteContextState>> =
  new InjectionToken<ActionReducerMap<SiteContextState>>('SiteContextReducers');





token 对应的 providers 在下图第 34 行代码处:



image.png


image.png




这个 provider 通过工厂函数提供:




image.png


在应用程序初始化时就会执行:



image.png



在 Angular Routing 和 ngx-bootstrap 的领域里,forRoot 有助于在指令和组件的多个实例之间共享 providers,以实现应用程序的全局关注。 例如,ngx-bootstrap 对模态对话框组件使用此约定。 虽然在应用程序的标记中可能定义了许多模态实例,但模态会接管整个 UI.


在路由的情况下,应用程序只有一个 window.location,因此即使可能有子路由和路由器出口组件的各种实例,它们都需要窗口位置的一个全局依赖关系,以便它们可以一起工作。


总之,forRoot() 约定代表了一种使用 ModuleWithProviders 接口导入 NgModule 及其提供程序的方法。


当一个feature NgModule 导出需要共享相同自定义提供程序实例的组件和指令时,请考虑使用 forRoot() 方法在根 NgModule 中注册这些提供程序。 这可以帮助确保所有子 NgModule 都可以访问相同的提供者实例,而无需消费者显式处理提供者注册。




相关文章
|
12月前
|
缓存 前端开发 JavaScript
基于 Spartacus 的 Angular Storefront 性能优化建议
基于 Spartacus 的 Angular Storefront 性能优化建议
|
搜索推荐 JavaScript 前端开发
Spartacus 开源项目给 SAP Commerce Cloud Storefront 共享的一些有用的特性介绍
Spartacus 开源项目给 SAP Commerce Cloud Storefront 共享的一些有用的特性介绍
|
12月前
|
安全
Spartacus Storefront 里如何在 SmartEdit 访问环境下暂时禁用 Early login
Spartacus Storefront 里如何在 SmartEdit 访问环境下暂时禁用 Early login
|
12月前
|
前端开发 安全 API
Above-the-Fold Loading 加载机制在 Spartacus Storefront 里的应用
Above-the-Fold Loading 加载机制在 Spartacus Storefront 里的应用
|
12月前
|
监控 前端开发 JavaScript
什么是 Spartacus Storefront B2B store 的 My Company 菜单
什么是 Spartacus Storefront B2B store 的 My Company 菜单
|
12月前
|
JSON 数据格式
Spartacus Storefront 产品明细页面里的 Add to Wish 动态隐藏问题
Spartacus Storefront 产品明细页面里的 Add to Wish 动态隐藏问题
|
12月前
|
缓存 负载均衡 前端开发
SAP Spartacus 和 Sticky session 相关的话题
SAP Spartacus 和 Sticky session 相关的话题
|
12月前
|
存储
SAP Emarsys 和 SAP Spartacus 的集成
SAP Emarsys 和 SAP Spartacus 的集成
|
12月前
|
API 开发者
Google Tag Manager (GTM) 和 Adobe AEPL 在 SAP Spartacus 中的应用
Google Tag Manager (GTM) 和 Adobe AEPL 在 SAP Spartacus 中的应用
下一篇
无影云桌面