关于sap:SAP-电商云-Spartacus-UI-Proxy-Facade-的一个实际例子

0次阅读

共计 1104 个字符,预计需要花费 3 分钟才能阅读完成。

如何了解 SAP 电商云 Spartacus UI 中的 proxy facade?

Jerry 这篇文章什么是 SAP 电商云 Spartacus UI 的 proxy façade 提供了实践上的解释。

本文介绍一个理论例子。

当咱们关上如下 url 时,默认是不会触发 Quick Order Core module 的加载的,因为咱们基本没有应用到 Quick Order 任何性能:

http://localhost:4299/electro…

当然,咱们依然有方法,在 homepage 的 app.module.ts 里手动编写一些代码,这些代码须要 Quick Order core module 被加载之后能力失常执行:

下面代码注入的依赖 QuickOrderFacade,尽管是 Quick Order root module 的一部分,被失常加载,然而 QuickOrderFacade 只是一个 Abstract Class,须要 core module 里提供的具体实现能力继续执行。因而,加上了上述代码之后,咱们拜访 Spartacus UI 的 homepage,也会触发 Quick Order Core module 的加载。

上述论断能够在 Chrome 开发者工具 network 标签页里察看到 Quick Order Core Module 的加载:

以及对应调试代码的打印:

在运行时,当 AppModule 作为入口 module 被加载时,Angular 框架会调用 _resolveInjectorDefTypes 解析器构造函数里申明的依赖:

此时因为 QuickOrder core module 尚未加载,因而通过 QuickOrderFacade 提供的工厂办法 FacadeFactory 去提供依赖:

这里调用规范的来自 Angular/core 的 inject,联合传入的 descriptor,进行注入:

调用 inject 注入 FacadeFactoryService 的后果是什么?

后果就是失去了 FacadeFactoryService 的一个实例,且该实例的每个属性字段也均被注入了对应的实例了:

这里咱们筹备创立 cartQuickOrderCore 的具体实现,首先须要查看这个 feature 是否曾经启用:

this.cmsConfig.featureModules 里的确存在 cartQuickOrder 的记录:

这里试图获取 QuickOrderFacade 的实现:

最终是通过 QuickOrderService 注入的。

此时 Quick Order core module 应该曾经加载了。

咱们来具体看一下到底是哪行代码触发的 core module 加载?

入口:

这一行的下一个函数调用触发提早加载:

最终地位:

更多 Jerry 的原创文章,尽在:” 汪子熙 ”:

正文完
 0