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

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


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

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

fromNgrxRouter.ROUTER_NAVIGATION

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

其中RouterState类型定义如下:

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

运行时的初始状态:

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

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

答案是这个CustomSerializer

semantic route:home,路径为"":

lookupSemanticRoute:

routing-config.service.ts:

谜底揭开了

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

SAP Spartacus的home page navigation逻辑相关推荐

  1. SAP Spartacus 如何根据 page layout 获得对应支持的 slots

    在 SAP Spartacus PageLayout Component 的实现里,每一个 layoutName 对应都有一个 cxOutlet 可供扩展: 第 13 行的 ngFor 指令,将该实现 ...

  2. SAP Spartacus ConsentTemplate 数据结构的暴露逻辑

    我基于SAP Spartacus 2.1创建的sample store,里面导入了ConsentTemplate这个数据结构. import { ActiveCartService, CartAddE ...

  3. SAP Spartacus 页面 cx-storefront 的填充逻辑

    SAP Spartacus 的 index.html 里,只有一个 cx-storefront custom element:这是 Storefront component 的 selector: A ...

  4. SAP Spartacus payment detail page的CMS模型

    url: http://localhost:4200/electronics-spa/en/USD/my-account/payment-details 请求payment page的url: htt ...

  5. 如何找到 SAP Spartacus OCC cms page 发送请求时读取 API endpoint 的代码

    CmsComponentAdapter: OccCmsComponentAdapter: 此处发起对 home page 的调用: 读取 CMS API 的 url: 这就是我在代码里配置的 endp ...

  6. SAP Spartacus Header区域的渲染逻辑

    文件:projects\storefrontlib\src\cms-structure\page\page-layout\page-layout.service.ts 9个一模一样的response: ...

  7. SAP Spartacus CmsPage的加载逻辑

    和培训老师讲得一样,经过了connector->adapter->service的过程: Returns an observable with the page structure. Th ...

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

    如何判断对于一个observable stream,存在一个可用的converter? 在方法hasConverters里进行: this.converters是一个map,里面有四个Spartacu ...

  9. SAP Spartacus B2B Unit page convertListItem方法的工作原理

    点击expand all后,触发该方法: 输入参数unit,就是从后台OCC API返回的数据: 变量node绝大部分数据来自unit,使用-, 增添了一些额外属性: 递归调用: 递归函数处理之后的结 ...

最新文章

  1. 关于Java的Classpath详解
  2. 组件化开发,制作Cocoapods Git库
  3. java中使用base64加密解密16进制方法
  4. LM3S1138驱动函数SysCtlPeripheralEnable解析
  5. 我心目中理想的开源软件
  6. 计算机入门模拟试题abcd,计算机一级计算机基础及WPSOffice应用考前模拟试题及答案(7)...
  7. 动图演示23个鲜为人知的VSCode快捷键
  8. SPA优缺点、解决单页面应用的SEO困难问题以及三种网页渲染方式
  9. 深度学习推荐模型-NFM
  10. Linux使用Wget实现整站下载
  11. Linux - 搭建LDAP统一认证服务
  12. Android实现微信查看附近的人
  13. IDEA删除文件如何恢复
  14. sar adc的常用指标(一)
  15. Python爬虫入门【11】:半次元COS图爬取
  16. 具象的东西_在《道德经》中,老子借助一些具象的东西,简化思想内容
  17. 百济神州港交所上市:募资9亿美元 高瓴曾参与7轮融资
  18. 权限管理框架实现(1)--Struts切面处理
  19. wavplay控件应用之SigmaStudio
  20. python中circle是什么意思_啥是佩奇,让 Python 告诉你!

热门文章

  1. 巅峰对话:畅想大数据时代的车联网与智能汽车
  2. java判断字符串中是否包含字母
  3. Android音频开发(3):如何播放一帧音频
  4. ado.net 插入一条数据
  5. VMware VI4的界面和操作介绍
  6. 财务一体化项目,进度与计划11
  7. 我是如何学习写一个操作系统(二):操作系统的启动之Bootloader
  8. 从零写一个编译器(八):语义分析之构造符号表
  9. Angr 初体验之探索口令
  10. 22)PHP,数组排序函数