SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer

如果直接访问如下 url:
http://localhost:4200/powerto...

SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第1张图片

页面打开后,没有看到和 product 相关的执行逻辑:

SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第2张图片

SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第3张图片

我们自定义的 ActivatedRouterStateSnapshot interface,和上图 Chrome 调试器里打印的结构很像:

SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第4张图片

先在这个 reducer 里设置断点:
SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第5张图片

打印出了海量的日志。我们先不管是谁触发的这些 reducer 调用,先查看和 product 相关的日志:

SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第6张图片

很像这两行:
SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第7张图片

果然,这里已经解析出 navigation target 了:
SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第8张图片

执行到这的时候,mavigation 的目标页面已经被解析出来了:

SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第9张图片

SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第10张图片

选择 cmsRequired 作为突破口。

在这个 serialize 方法里设置断点:

SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第11张图片

输入参数仅仅包含了一个 url:
SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第12张图片

这个 cxRoute: 'product' 是哪里维护的?

SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第13张图片

这个 serialize 方法被调用时,貌似已经解析出来了?
SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第14张图片

cmsRequired 的赋值逻辑:
SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第15张图片

还是没有找到我们要找的地方。

SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第16张图片

这个 serializer 只是我们实现的一个 hook:
SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer_第17张图片

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

你可能感兴趣的:(SAP 电商云 Spartacus UI 实现的 ngrx-router-store.js 的 serializer)