草庐IT

Spartacus

全部标签

关于 SAP Spartacus 层的 UI 设计

Spartacus每个UI划分成不同的区域section,每个区域由若干个slots组成。每个slot可以包含一个或多个CMSComponent.以homepage为例,其实现的HTML位置:projects\storefrontlib\src\layout\main\storefront.component.html看这个header区域:这个header区域分配的slots,定义在文件layout-config.ts里:关于这个layout-config.ts文件的作用,介绍如下。在layout-config.ts文件中,你会发现一个名为LayoutConfig的接口,该接口定义了Spar

如何确认 SAP Spartacus SSR Transfer State 已经正常工作了

在检查一些客户项目时,我注意到一旦返回SSR响应,浏览器仍然会执行页面和组件的XHR请求。我使用的代码为:provideConfig({state:{ssrTransfer:{keys:{[CMS_FEATURE]:StateTransferType.TRANSFER_STATE},},},}),在返回的index.html中,您可以检查script标签,默认情况下它的id应该是spartacus-app-state:.如果数据已经存在于index.html里,Spartacus不应该执行http重新获取它。CMSHTTP请求总是被执行,以防后台发生变化。如果您不经常更改CMS,则可以考虑将r

SAP 电商云 Spartacus UI Site Context 模块里 Providers 组件的实现明细

providersindex.ts里只有两份export:context-ids.ts是一些参数常量。exportconstLANGUAGE_CONTEXT_ID='language';exportconstCURRENCY_CONTEXT_ID='currency';exportconstBASE_SITE_CONTEXT_ID='baseSite';exportconstTHEME_CONTEXT_ID='theme';context-service-map.ts(ContextServiceMap)ContextServiceMap是一个map结构,key是字符串,value是这种sit

关于 SAP Spartacus 重定向部分外部 url 到后台系统的问题

许多客户将采用逐步(route-by-route)的方式从Accelerator迁移到spartacus,这意味着客户将使用不同的系统在同一域中同时驱动部分店面。我们希望支持具有可配置的路由,并可选择从SPA中退出并重新加载页面以允许后端驱动的响应(基于URL模式)。只要我们在SPA的范围内,我们只执行interal导航,因为使用了Angular的routerLink,按照设计它不会进行完全重新加载。但是,我们可以使用Guard定义虚拟路由,强制执行指定配置路径的完全重新加载。为了更容易测试(不要进入闪烁页面重新加载的无限循环),通过扩展ExternalRoutesGuard来延迟页面重新加载

SAP Spartacus Site Context 实现专题页面

@[toc]SiteContext的实现位于core\src\文件夹之下。实现总共分下列八大部分:site-context.module.ts绝大多数import都是site-context文件夹自身的子文件夹提供的:上图第一行,从@angular/core导入ModuleWithProviders,这是一个包装器:将NgModule与provider关联的NgModule的包装器。不推荐使用没有泛型类型的用法。该Module对外只暴露了两个方法:initSiteContextConfig注入值:SiteContextConfigInitializerSiteContextConfig如果co

关于 SAP 电商云 Spartacus UI Transfer State 冗余 API 请求发送的讨论

Angular的TransferState类使服务器端渲染(SSR)和预渲染(Prerendered-SSR)Angular应用程序能够使用从服务器获取的数据并且有效地在浏览器中渲染。如果您使用的是SSR或预渲染应用程序策略,那么该过程大致是这样的:在服务器上预渲染或渲染应用程序浏览器获取呈现的HTML和CSS并显示“静态”应用程序浏览器获取、解析、解释和执行JavaScriptAngular应用程序被引导,用新的“正在运行”的应用程序替换整个DOM树应用程序已初始化,通常从远程服务器或API获取数据用户与应用程序交互这个场景有两个问题:DOMhydration会重复替换整个节点树并重新绘制应

让 Spartacus 服务器端渲染引入 long API 调用超时机制的两种配置方法

两种方法,使用config.backend.timeout={浏览器:...,服务器:...},或者可以更具体地配置,即基于Request粒度,通过将HTTP_TIMEOUT_CONFIGHttpContextToken传递给AngularHttpClient的方法来针对每个具体请求进行配置。在SSR(Node.js)中,超时处理耗时过长的外部http调用是一项尤为重要的改进,因为在Node.js中,与浏览器不同,Node.js运行环境下并没有默认的外部http调用超时时间(浏览器通常会在长时间后超时长时间的http调用,例如1分钟)。这种可配置的超时逻辑现在已经在Spartacus中的Ang

让 Spartacus 服务器端渲染引入 long API 调用超时机制的两种配置方法

两种方法,使用config.backend.timeout={浏览器:...,服务器:...},或者可以更具体地配置,即基于Request粒度,通过将HTTP_TIMEOUT_CONFIGHttpContextToken传递给AngularHttpClient的方法来针对每个具体请求进行配置。在SSR(Node.js)中,超时处理耗时过长的外部http调用是一项尤为重要的改进,因为在Node.js中,与浏览器不同,Node.js运行环境下并没有默认的外部http调用超时时间(浏览器通常会在长时间后超时长时间的http调用,例如1分钟)。这种可配置的超时逻辑现在已经在Spartacus中的Ang
12