我们在SAPSpartacusAppModule中进行如下ExternalRoute配置后:provideConfig({routing:{internal:['/**','!/cart','!/**/p/**']}}),一旦访问了SpartacusCarturl,从Chrome开发者工具网络可以观察到整个应用程序不断自我刷新。整个实现位于routing文件夹下:在ExternalRoutesService中添加调试代码:运行时观察到的输出:ExternalRoutesService中的addRoutes方法负责重定向到另一个Storefront系统并设置一个新的Routes配置:添加一行打印语句:ThisaddRoutes方法作为Angular应用的初始化器(initializers)被调用:上图第34行代码调用Service类自身实现的getRoutes方法:然后从注入器中获取Routers实例,进而获取当前存在的路由配置:resetConfigAPI的文档:UrlMatcher负责决定是否应该激活外部路由:这个getUrlMatcher方法也是在addRoutes方法调用中执行的:UrlMatcherService:WhatisaGloblikeservice?Glob,也称为glob模式,是可以将通配符模式扩展为与给定模式匹配的路径名列表的模式。在早期版本的Linux中,命令解释器依赖于将这些字符扩展为不带引号的命令参数的程序:/etc/glob。该命令后来作为库函数提供,现在被包括shell在内的大量程序使用。几种不同的工具和语言都采用了globs并进行了微小的更改。例如:Node.jsGoJavaHaskellPythonRubyPHPSpartacusGlobService接收一个字符串数组作为输入参数并返回一个验证器函数:观察它的调用堆栈,仍然在addRoutes方法的执行体中:验证器将只匹配任何正模式而不会匹配负模式对给定的URL返回true。
