connectors包括:site.connector.tssite.adapter.tsconverters.tsconverters.ts或者从site-context级目录导入:Createseveralnormalizerinjectiontokens:Converter负责将数据模型从后台格式转换为UI模式:site.adapter.ts(SiteAdapter)是一个纯虚函数:在core的occ文件夹中,SiteAdapter由OCCSiteAdapter实现:site.connector.ts(SiteConnector)通过构造函数注入的SiteAdapter对应的方法。events这里是第二个模块:site-context-event.module.ts空模块:site-context-event.builder.ts(SiteContextEventBuilder)所有导入信息:这里注入标准ActionSubject,来自@ngrx/store:registermethodprotectedregister():void{this.registerSetLanguage();这个.registerSetCurrency();}registerSetLanguage下面是详细的调试细节。通过构造函数参数注入ActionSubject:在运行时,触发setActiveLanguageaction:payload为en:在language.service.ts中,抛出一个action:SiteContextActions.SetActiveLanguage(isocode)为什么eventbuilder可以接收到?通过这个OfType:en参数似乎是从浏览器地址栏url中提取的:我们可以通过定义baseSite、语言和货币等上下文属性来配置应用程序。当我们将这些属性的值附加到店面URL时,店面会根据这些值进行配置。例如,当用户访问https://localhost:4200/electr...时,应用程序加载electronic-spabase-site,将站点语言设置为英语(en),并将货币设置为美元(USD).context属性还为语言和货币下拉菜单设置默认值,可用于动态更改店面的上下文。默认情况下,上下文不会出现在Spartacus店面URL中。一些客户可能希望在店面URL中显示上下文,作为优化SEO或保持URL与以前店面的兼容性的一种方式。例如,客户可能希望搜索机器人根据URL中的语言和货币对店面的不同版本进行分类。或者,客户可能会从另一个在URL中有上下文的店面迁移到Spartacus,而您希望保持之前建立的页面排名。要在URL中包含上下文,请将urlParameters属性添加到app.modules.ts中的上下文属性。这是一个示例:context:{baseSite:['electronics-spa'],urlParameters:['baseSite','language','currency']},
