SAP Spartacus的home page navigation逻辑
我以开发模式启动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逻辑相关推荐
- SAP Spartacus 如何根据 page layout 获得对应支持的 slots
在 SAP Spartacus PageLayout Component 的实现里,每一个 layoutName 对应都有一个 cxOutlet 可供扩展: 第 13 行的 ngFor 指令,将该实现 ...
- SAP Spartacus ConsentTemplate 数据结构的暴露逻辑
我基于SAP Spartacus 2.1创建的sample store,里面导入了ConsentTemplate这个数据结构. import { ActiveCartService, CartAddE ...
- SAP Spartacus 页面 cx-storefront 的填充逻辑
SAP Spartacus 的 index.html 里,只有一个 cx-storefront custom element:这是 Storefront component 的 selector: A ...
- SAP Spartacus payment detail page的CMS模型
url: http://localhost:4200/electronics-spa/en/USD/my-account/payment-details 请求payment page的url: htt ...
- 如何找到 SAP Spartacus OCC cms page 发送请求时读取 API endpoint 的代码
CmsComponentAdapter: OccCmsComponentAdapter: 此处发起对 home page 的调用: 读取 CMS API 的 url: 这就是我在代码里配置的 endp ...
- SAP Spartacus Header区域的渲染逻辑
文件:projects\storefrontlib\src\cms-structure\page\page-layout\page-layout.service.ts 9个一模一样的response: ...
- SAP Spartacus CmsPage的加载逻辑
和培训老师讲得一样,经过了connector->adapter->service的过程: Returns an observable with the page structure. Th ...
- SAP Spartacus里的converter实例化逻辑
如何判断对于一个observable stream,存在一个可用的converter? 在方法hasConverters里进行: this.converters是一个map,里面有四个Spartacu ...
- SAP Spartacus B2B Unit page convertListItem方法的工作原理
点击expand all后,触发该方法: 输入参数unit,就是从后台OCC API返回的数据: 变量node绝大部分数据来自unit,使用-, 增添了一些额外属性: 递归调用: 递归函数处理之后的结 ...
最新文章
- 关于Java的Classpath详解
- 组件化开发,制作Cocoapods Git库
- java中使用base64加密解密16进制方法
- LM3S1138驱动函数SysCtlPeripheralEnable解析
- 我心目中理想的开源软件
- 计算机入门模拟试题abcd,计算机一级计算机基础及WPSOffice应用考前模拟试题及答案(7)...
- 动图演示23个鲜为人知的VSCode快捷键
- SPA优缺点、解决单页面应用的SEO困难问题以及三种网页渲染方式
- 深度学习推荐模型-NFM
- Linux使用Wget实现整站下载
- Linux - 搭建LDAP统一认证服务
- Android实现微信查看附近的人
- IDEA删除文件如何恢复
- sar adc的常用指标(一)
- Python爬虫入门【11】:半次元COS图爬取
- 具象的东西_在《道德经》中,老子借助一些具象的东西,简化思想内容
- 百济神州港交所上市:募资9亿美元 高瓴曾参与7轮融资
- 权限管理框架实现(1)--Struts切面处理
- wavplay控件应用之SigmaStudio
- python中circle是什么意思_啥是佩奇,让 Python 告诉你!