天天看点

SAP Spartacus里的converter实例化逻辑

如何判断对于一个observable stream,存在一个可用的converter?

SAP Spartacus里的converter实例化逻辑

在方法hasConverters里进行:

SAP Spartacus里的converter实例化逻辑

this.converters是一个map,里面有四个Spartacus标准的converter:

SAP Spartacus里的converter实例化逻辑

因为这四个标准的normalizer都不是ProductNormalizer,因此继续搜索:

SAP Spartacus里的converter实例化逻辑

此处生成converter实例:

SAP Spartacus里的converter实例化逻辑

token:

SAP Spartacus里的converter实例化逻辑

这就是我们应用代码里提供的Normalizer:

SAP Spartacus里的converter实例化逻辑
SAP Spartacus里的converter实例化逻辑

如何实例化converter?

在hydrate方法里:

SAP Spartacus里的converter实例化逻辑

这里有个递归操作:

SAP Spartacus里的converter实例化逻辑

record.factory,这个工厂方法里,直接调用ProductNameNormalizer,也就是我应用程序里实现的Normalizer:

SAP Spartacus里的converter实例化逻辑

看这个JavaScript代码和TypeScript代码是如何一一对应的:

SAP Spartacus里的converter实例化逻辑

factory:

SAP Spartacus里的converter实例化逻辑

继续阅读