当前位置: 首页 > Web前端 > HTML5

SAP电商云SpartacusUISiteContextParamsService实现原理分析

时间:2023-04-05 18:40:06 HTML5

近年来电商应用网站设计的一个趋势是引入所谓的无干扰结账,即去除常规网页中的页眉和页脚,以便用户将注意力集中在结帐过程本身,以防止其意外导航出结帐页面。Spartacus由CMS(内容管理系统)驱动。这意味着它根据从后端返回的内容显示。因此,要删除页眉和页脚,只需从结帐CMS页面中删除页眉和页脚插槽即可。这是一个快速且无代码的解决方案,其优点是内容管理员能够自行启用或禁用非侵入性的checkout.site-context-params.service.ts(SiteContextParamsService)此类通过构造函数注入三个依赖项,all是在站点上下文文件夹中实现的资源。SiteContextConfig是全局配置对象上新添加的上下文字段:exportabstractclassSiteContextConfig{context?:{urlParameters?:string[];[上下文名称:字符串]:字符串[]|不明确的;};}getContextParameters该方法获取context除了urlParameters之外的其他上下文参数,例如语言和货币字段名称。getContextParameters():string[]{if(this.config.context){returnObject.keys(this.config.context).filter((param)=>param!=='urlParameters');}返回[];}getUrlEncodingParameters获取上下文中的url参数值:getUrlEncodingParameters():string[]{return(this.config.context&&this.config.context.urlParameters)||[];}getParamValues获取参数值内容:getParamValues(param:string):string[]{returngetContextParameterValues(this.config,param);}getSiteContextService根据参数名手动获取注入的参数服务类实例。运行时,从浏览器地址栏中提取地址栏包含的url参数url:parsedJSONobject:对于每个参数对象,根据参数名解析出对应的参数服务类,然后调用setValue方法。从服务映射中获取服务类的类型,然后使用Angularinjector进行实例注入:将活动基站点设置为浏览器地址栏中url中包含的值:这个base-site.service.ts位于门面层:另外,当上下文发生变化时,服务类的getActive也会发出最新的数据:例如从下拉列表中更改语言:所以最新的语言被传入回调函数订阅指定: