天天看点

SAP Spartacus的home page navigation逻辑

我以开发模式启动SAP Spartacus,浏览器里输入url: localhost:4200, 会自动重定向到如下页面:

http://localhost:4201/powertools-spa/en/USD/

SAP Spartacus的home page navigation逻辑

这个action是我们自己自定义的serializer里生成的。

在router.reducer.ts里打印出action明细:

fromNgrxRouter.ROUTER_NAVIGATION

SAP Spartacus的home page navigation逻辑

发现powertools-spa/en/USD对应的semanticRoute是home, 而context字段指向的PageContext,id为__HOMEPAGE__, type为ContentPage:

SAP Spartacus的home page navigation逻辑

其中RouterState类型定义如下:

SAP Spartacus的home page navigation逻辑

当前状态,即初始状态,page context为空。初始状态也定义在router.reducer.ts里:

SAP Spartacus的home page navigation逻辑

运行时的初始状态:

SAP Spartacus的home page navigation逻辑

homepage维护在action payload里。下图已经是从初始状态进入加载context id为__HOMEPAGE__的下一状态了:

SAP Spartacus的home page navigation逻辑

问题:这个包含了home page的action是谁主动发起的呢?

SAP Spartacus的home page navigation逻辑
SAP Spartacus的home page navigation逻辑

答案是这个CustomSerializer:

SAP Spartacus的home page navigation逻辑

semantic route:home,路径为"":

SAP Spartacus的home page navigation逻辑

lookupSemanticRoute:

SAP Spartacus的home page navigation逻辑
SAP Spartacus的home page navigation逻辑

routing-config.service.ts:

SAP Spartacus的home page navigation逻辑

谜底揭开了

SAP Spartacus的home page navigation逻辑

继续阅读