为什么 SAP 电商云 Spartacus 产品明细页面的自定义 matcher 会重复被调用
http://localhost:4200/powertools-spa/en/USD/jerryproduct/3755211/PSR%2010.8%20LI
为什么打开一个 product 明细页面,也调用了 12 次?
看样子是被 Angular router 框架调用的:
原来还真不是多个 roundtrip 重复调用,而是递归调用:
这是一个闭包:
顺便把参数也解析了:
回到 router.js 代码里,现在通过了 noMatch 检测,继续执行。
又要进行第二轮的 match 检测了:
又是一轮递归执行:
现在能够 return 了:
到目前为止已经执行六次了,被调用两次,每次里如上图所示有三个递归,3 × 2 = 6
再次进入 router.js:
三次递归调用:
这里又触发我们的自定义 matcher 了,第三次触发:
又是三个递归调用:
match 通过,创建一个新的 ActivatedRouteSnapshot 对象:
更多Jerry的原创文章,尽在:“汪子熙”:
为什么 SAP 电商云 Spartacus 产品明细页面的自定义 matcher 会重复被调用相关推荐
- SAP 电商云 Spartacus 产品明细页面的 canActivate 执行逻辑 - isUrlProtected
调试入口:cms-page.guard.ts 的 canActivat 方法: 输入参数是已经成功匹配了的产品明细页面路由: 判断这个 url 片段是否属于被保护对象: 默认配置为 false: 因此 ...
- SAP 电商云 Spartacus 产品明细页面的 pageContext 如何获取的?
调试入口:this.routingService.getNextPageContext() 这个 page context 直接从 store 里读取的,靠调试 selector 是拿不到的. 我们以 ...
- SAP 电商云 Spartacus 产品明细页面的 OCC API 是如何被触发的
当访问如下 url 时, http://localhost:4200/powertools-spa/en/USD/jerryproduct/3755211/PSR%2010.8%20LI 我们能看到如 ...
- SAP 电商云 Spartacus UI Checkout 页面的三个 page guards
点击 Proceed To 按钮之后,触发 CmsGuardsService 的 cmsPageCanActivate 方法: 依次调用每个 page guard: if (guards.length ...
- SAP 电商云 Spartacus UI 产品明细页面路由路径的自定义配置
如下图所示,为了减少 SAP 电商云 Spartacus 客户实施时不必要的配置,Spartacus 将不少页面的路由路径的默认配置,定义在如下的 default-routing-config.ts ...
- SAP 电商云 Spartacus UI 产品搜索结果的设计明细
我们使用如下 url 访问 SAP 电商云 Spartacus UI 产品搜索页面: http://localhost:4000/electronics-spa/en/USD/search/sony ...
- Mobile first 设计思路在 SAP 电商云 Spartacus UI 中的设计体现一例
关于 Mobile First 的概念,请查看我这篇文章:什么是前端开发中的 mobile first 策略. 下图是 SAP 电商云 Spartacus UI 的搜索结果页面: 其布局设计:temp ...
- SAP 电商云 Spartacus UI ComponentDataProvider defer 工厂函数
为什么 this.componentService.getItems 最后就触发到 Component-data.provider.ts 工厂函数的执行了? 29行的 getService: getS ...
- SAP 电商云 Spartacus UI 里如何捕捉语言设置的更改
我们知道在 SAP 电商云 Spartacus UI 里,用户可以通过下拉菜单更改当前访问 site 的语言: 监控语言变化的代码: this.subscription.add(this.langua ...
最新文章
- 多视图几何三维重建实战系列之R-MVSNet
- Python练习2-基本聊天程序-虚拟茶会话
- jquery学习手记(3)属性
- RotateAnimation 实现表盘指针转动
- 实时监听input输入框value的变化:
- Daily scrum 10.15
- Linux统计文件行数、字数、字节数
- php ipg 透明,产品中心
- 支撑1300+矿井监控,华为云数据库助力打造智能矿山
- Altium Designer 09简易教程(一)
- HackerRank Word Order
- Ubuntu安装wine
- hz什么梗_hz是什么意思饭圈
- javascript 基本用法
- 互联网地图栅格比例尺(3857,4326)
- 一些javascript内容
- mysql logs_MySQL Logs
- Java核心技术之Comparator和Comparable在排序中的应用
- Python实现猜单词游戏
- 2021年施工员-土建方向-岗位技能(施工员)考试技巧及施工员-土建方向-岗位技能(施工员)实操考试视频
热门文章
- 在Eclipse的DDMS中查找genymotion模拟器的sdcard中的文件---开发中遇到的问题(一)
- [转] 以 async/await 为例,说明 babel 插件怎么搭
- ES6-note-Set和Map(草稿)
- 【Solidity】1.一个Solidity源文件的布局 - 深入理解Solidity
- Maven 插件打包java 后台
- JavaScript常用内置对象之Array
- Centos安装Xen总结
- iOS 苹果app提交 ITC.apps.validation.prerelease_build_missing
- javaweb入门笔记(4)-request和response
- 在jsp页面利用Ajax动态显示数据库中数据