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 会重复被调用相关推荐

  1. SAP 电商云 Spartacus 产品明细页面的 canActivate 执行逻辑 - isUrlProtected

    调试入口:cms-page.guard.ts 的 canActivat 方法: 输入参数是已经成功匹配了的产品明细页面路由: 判断这个 url 片段是否属于被保护对象: 默认配置为 false: 因此 ...

  2. SAP 电商云 Spartacus 产品明细页面的 pageContext 如何获取的?

    调试入口:this.routingService.getNextPageContext() 这个 page context 直接从 store 里读取的,靠调试 selector 是拿不到的. 我们以 ...

  3. SAP 电商云 Spartacus 产品明细页面的 OCC API 是如何被触发的

    当访问如下 url 时, http://localhost:4200/powertools-spa/en/USD/jerryproduct/3755211/PSR%2010.8%20LI 我们能看到如 ...

  4. SAP 电商云 Spartacus UI Checkout 页面的三个 page guards

    点击 Proceed To 按钮之后,触发 CmsGuardsService 的 cmsPageCanActivate 方法: 依次调用每个 page guard: if (guards.length ...

  5. SAP 电商云 Spartacus UI 产品明细页面路由路径的自定义配置

    如下图所示,为了减少 SAP 电商云 Spartacus 客户实施时不必要的配置,Spartacus 将不少页面的路由路径的默认配置,定义在如下的 default-routing-config.ts ...

  6. SAP 电商云 Spartacus UI 产品搜索结果的设计明细

    我们使用如下 url 访问 SAP 电商云 Spartacus UI 产品搜索页面: http://localhost:4000/electronics-spa/en/USD/search/sony ...

  7. Mobile first 设计思路在 SAP 电商云 Spartacus UI 中的设计体现一例

    关于 Mobile First 的概念,请查看我这篇文章:什么是前端开发中的 mobile first 策略. 下图是 SAP 电商云 Spartacus UI 的搜索结果页面: 其布局设计:temp ...

  8. SAP 电商云 Spartacus UI ComponentDataProvider defer 工厂函数

    为什么 this.componentService.getItems 最后就触发到 Component-data.provider.ts 工厂函数的执行了? 29行的 getService: getS ...

  9. SAP 电商云 Spartacus UI 里如何捕捉语言设置的更改

    我们知道在 SAP 电商云 Spartacus UI 里,用户可以通过下拉菜单更改当前访问 site 的语言: 监控语言变化的代码: this.subscription.add(this.langua ...

最新文章

  1. 多视图几何三维重建实战系列之R-MVSNet
  2. Python练习2-基本聊天程序-虚拟茶会话
  3. jquery学习手记(3)属性
  4. RotateAnimation 实现表盘指针转动
  5. 实时监听input输入框value的变化:
  6. Daily scrum 10.15
  7. Linux统计文件行数、字数、字节数
  8. php ipg 透明,产品中心
  9. 支撑1300+矿井监控,华为云数据库助力打造智能矿山
  10. Altium Designer 09简易教程(一)
  11. HackerRank Word Order
  12. Ubuntu安装wine
  13. hz什么梗_hz是什么意思饭圈
  14. javascript 基本用法
  15. 互联网地图栅格比例尺(3857,4326)
  16. 一些javascript内容
  17. mysql logs_MySQL Logs
  18. Java核心技术之Comparator和Comparable在排序中的应用
  19. Python实现猜单词游戏
  20. 2021年施工员-土建方向-岗位技能(施工员)考试技巧及施工员-土建方向-岗位技能(施工员)实操考试视频

热门文章

  1. 在Eclipse的DDMS中查找genymotion模拟器的sdcard中的文件---开发中遇到的问题(一)
  2. [转] 以 async/await 为例,说明 babel 插件怎么搭
  3. ES6-note-Set和Map(草稿)
  4. 【Solidity】1.一个Solidity源文件的布局 - 深入理解Solidity
  5. Maven 插件打包java 后台
  6. JavaScript常用内置对象之Array
  7. Centos安装Xen总结
  8. iOS 苹果app提交 ITC.apps.validation.prerelease_build_missing
  9. javaweb入门笔记(4)-request和response
  10. 在jsp页面利用Ajax动态显示数据库中数据