SAP Commerce Cloud Spartacus UI 的购物车 Cart 功能
此功能是在 TUA Spartacus 库的 1.0 版中引入的。 购物车在 TUA Spartacus 与核心 Commerce Spartacus 中的工作方式不同,需要支持产品供应以及复杂的定价结构,以支持多种类型的收费,包括一次性收费、经常性收费和基于使用的收费。 在各种费用中,对于购物车,客户需要了解结帐时的立即付款费用以及每月经常性费用承诺。 什么是 TUA Spartacus?
NgRx Store createSelector 返回的 selector 执行取数逻辑的单步调试
测试源代码: import { Component } from '@angular/core'; import { createSelector } from '@ngrx/store'; export interface State { counter1: number; counter2: number; } export con
NgRx Store createSelector 的单步调试和源代码分析
源代码: import { Component } from '@angular/core'; import { createSelector } from '@ngrx/store'; export interface State { counter1: number; counter2: number; } export const
NgRx Selector 的 Memoization 特性学习笔记
在计算机编程领域中,memoization 或 memoisation 是一种优化技术,主要用于通过存储昂贵的函数调用的结果并在再次出现相同的输入时返回缓存的结果来加速计算机程序。 Memoization 也已用于其他上下文(以及速度增益以外的目的),例如在简单的相互递归下降解析中。尽管与缓存有关,但记忆化是指此优化的特定情况,将其与缓存或页面替换等缓存形式区分开来。在某些逻辑编程语言的上下文
RxJs SwitchMapTo 操作符之移花接木
将每个源值投影到同一个 Observable,该 Observable 在输出 Observable 中使用 switchMap 多次展平。 输入一个 Observable,输出一个 function Operator. 实际是一个函数,每次在源 Observable 上发出值时,该函数都会返回一个 新的 Observable. 该函数从给定的 innerObservable 发出项目,并且仅
NgRx 里 first 和 take(1) 操作符的区别
take(1) vs first() first() 运算符采用可选的 predicate 函数,并在源完成后没有匹配的值时发出错误通知。 下列代码会报错: import { EMPTY, range } from 'rxjs'; import { first, take } from 'rxjs/operators'; EMPTY.pipe(firs
如何获取 SAP Commerce Cloud Spartacus UI 购物车 Cart 的加载状态
在 Storefront AppModule 构造函数里注入 ActiveCartService: private cartService: ActiveCartService, 调用其 API: const loading$ = this.cartService.getLoading(); loading$.subscribe((data) => console.l
关于 SAP Spartacus Loader Meta Reducer 的用途
为了给用户更好的反馈,基于他们的行为,我们经常需要保留诸如“正在加载购物车”、“获取用户地址失败”等信息。 对于每个单独的应用程序状态,我们必须将元数据放在旁边。 分别用于购物车、用户信息、产品数据等。 在所有这些地方手动实现这个逻辑会导致在整个代码库中针对同一问题有不同的解决方案。 这就是在 spartacus 中创建 loaderReducer 的原因。 这个reducer 标准化了整个状态树
SAP Commerce Cloud Spartacus UI 的高阶 reducer 设计
在 components.reducer.ts 里,loaderReducer 函数,会根据输入的 entityType,返回一阶 reducer. 然后在代码第86行,调用该一阶 reducer 进行状态转换,返回新的状态。 在 cms store reducers index.ts 里,该 reducer 被导入,见代码第21行: 然后,在第49行,调用 entityReduce
SAP Commerce Cloud Spartacus UI 的 ActionClass 数据结构设计
以 CmsSetPageSuccessIndex 为例: 运行时该 Action 类包含三大字段: (1) meta(2) payload(3) type metameta 包含的 loader 字段和 meta 本身都是一个 object. meta.entityId 和 entityType 是该 action payload 的标识位。 loader 表明该 entity
SAP 电商云 Spartacus SSR Optimization Engine 几处 timeout 的执行顺序
SSR optimization engine option 代码: const ngExpressEngine = NgExpressEngineDecorator.get(engine, { timeout: 9000, concurrency: 1, forcedSsrTimeout:90000, maxRenderTime:1000, cache: true, cac
SAP Commerce Cloud Spartacus UI 修改 primary color 的方法
问题 解答 The easiest and recommended way to override basic primary colors, as of version 4.0, is by changing the compiled values of the CSS variables. But change them inside a CSS body selector, instea
Angular CLI 全局 ng.cmd 文件内容分析
文件内容如下: REM Jerry ::这是注释 @ECHO off SETLOCAL CALL :find_dp0 IF EXIST "%dp0%\node.exe" ( SET "_prog=%dp0%\node.exe" ) ELSE ( SET "_prog=node" SET PATHEXT=
基于 abapGit 和 abaplint 的 ABAP 持续集成的一个例子
这是 Jerry 2021 年的第 61 篇文章,也是汪子熙公众号总共第 338 篇原创文章。 短歌行曹操 对酒当歌,人生几何! 譬如朝露,去日苦多。 慨当以慷,忧思难忘。 何以解忧?唯有杜康。 青青子衿,悠悠我心。 但为君故,沉吟至今。 呦呦鹿鸣,食野之苹。 我有嘉宾,鼓瑟吹笙。 明明如月,何时可掇? 忧从中来,不可断绝。 越陌度阡,枉用相存。 契阔谈讌,心念旧恩。
聊聊 SAP 产品 UI 上的消息显示机制
这是 Jerry 2021 年的第 60 篇文章,也是汪子熙公众号总共第 337 篇原创文章。 本文从 StackOverflow 社区上来自 Partner 的一个 SAP Commerce Cloud Spartacus UI 的定制化需求说起。 这个需求的背景是,客户在 SAP 电商云的产品明细页面,可以留下自己的评论,点击 Submit 按钮提交。 提交之后,能看到“谢谢评论
给某个 SAP S/4HANA 用户分配 Business Role
首先使用 Administrator 登录 SAP S/4HANA: 使用 SAP S/4HANA 标准的 Fiori 应用 Maintain Business Users,找到想要分配 Business Role 的用户: 点击 Edit 按钮,进入 Assigned Business Roles 标签页,点击 Add 按钮: 根据需要,添加对应的 Business R
SAP Commerce Cloud Product Review 的添加逻辑
点了 Write Review 按钮之后,调用 ProductReviewService 的 add 方法: 该方法 dispatch 一个新的 action: override the ProductReviewService to dispatch a custom action to an effect they would create with the logic t
如何正确地把服务器端返回的文件二进制流写入到本地保存成文件
我使用 Node.js 的 request 工具库,请求服务器端的视频文件,保存到本地之后,发现了问题。 我把 url 输入到浏览器里,手动下载视频文件后,文件大小为 70 多 KB: 然而使用 Node.js 代码请求文件数据并保存到本地,发现文件尺寸变成 100 多 KB 了,显然不正确: 经过研究发现,需要使用 request 在发起数据请求之前,添加如下一行语句: requ
SAP Spartacus 标准的 Effects 实现的注入原理
先研究标准的 effect 为何可以被 call 到:在 ProductReviewsEffects 构造函数里设置断点: 发现在访问首页时,断点即触发。 为什么 AppModule 启动时,就要加载 ProductReviewEffect? 单击 AppModule,就跳转到我自定义的 AppModule 文件了,但是该文件里并没有 ProductReviewEffect: 这个 E
Angular Universal:Angular 统一平台简介
Angular Universal 本文介绍 Angular Universal(统一平台),一项在服务端运行 Angular 应用的技术,即服务器端渲染。 如下图 package.json 里定义的依赖 @nguniversal/express-engine 所示: 标准的 Angular 应用会运行在浏览器中,它会在 DOM 中渲染页面,以响应用户的操作。 而Angular Univ