前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAP 电商云 Spartacus UI External Route 的模块实现概述

SAP 电商云 Spartacus UI External Route 的模块实现概述

作者头像
Jerry Wang
发布2022-11-16 16:14:35
3490
发布2022-11-16 16:14:35
举报

我们在 SAP Spartacus AppModule 里进行如下的 External Route 配置之后:

代码语言:javascript
复制
    provideConfig({
      routing: {
        internal: [
          '/**',
          '!/cart',
          '!/**/p/**'
        ]
      }
    }),

一旦访问 Spartacus Cart url,从 Chrome 开发者工具 network 里就能观察到,整个应用不停的自刷新。

整个实现位于 routing 文件夹下:

ExternalRoutesService 里加上调试代码:

运行时观察到的输出:

ExternalRoutesService 里的 addRoutes 方法,职责是为 redirect 到另一个 Storefront 系统,设置新的 Routes 配置:

加上一行打印语句:

这个 addRoutes 方法是作为 Angular 应用的初始化器(initializers) 被调用的:

上图第 34 行代码,调用 Service class 自己实现的 getRoutes 方法:

然后从 injector 里取得 Routers 实例,进而取得当前已有的 routes 配置:

resetConfig API 的文档

UrlMatcher 负责决定 external route 是否应当被 activated:

这个 getUrlMatcher 方法也是在 addRoutes 方法调用里执行的:

UrlMatcerService:

什么是 Glob like service?

Glob,也称为 glob 模式,是可以将通配符模式扩展为与给定模式匹配的路径名列表的模式。 在 Linux 的早期版本中,命令解释器依赖于一个程序,该程序将这些字符扩展为命令的不带引号的参数:/etc/glob。 该命令后来作为库函数提供,现在被大量程序使用,包括 shell。 几种不同的工具和语言已经采用了 glob,并对其进行了小小的改动。 比如:

  • Node.js
  • Go
  • Java
  • Haskell
  • Python
  • Ruby
  • PHP

Spartacus Glob Service 接收一个字符串数组作为输入参数,返回一个 validator 函数:

观察其调用栈,仍然是在 addRoutes 方法执行体内:

仅当匹配任何正模式且没有负模式时,验证器才会为给定 URL 返回 true.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 Glob like service?
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档