当前位置:网站首页>SAP 电商云 Spartacus UI 页面布局的设计原理
SAP 电商云 Spartacus UI 页面布局的设计原理
2022-08-04 16:38:00 【华为云】
Spartacus 每个 UI 划分成不同的区域 section,每个区域由若干个 slots 组成。每个 slot 可以包含一个或多个 CMS Component.
我曾经写过一篇 文章 详细介绍过。
以 homepage为例,其实现的 HTML 位置:projects\storefrontlib\src\layout\main\storefront.component.html
看这个 header 区域:

这个 header 区域分配的 slots,定义在文件 layout-config.ts 里:

这些 slots 里包含的 CMS Components,运行时渲染好之后,显示的内容如下图高亮区域所示:

客户可以通过配置的方式,决定这些 slots 哪些显示,哪些不显示,以及调换slots 间的相对位置。
比如我让 header 区域只显示一个 Sitelogo:

最后的效果如下图:

我曾经出于调试目的,把 UI 上每个区域的 slot id 和 Component id 都打印出来,如下图所示:

副标题:SAP Spartacus SSR 优化的单元测试分析之二 - 调用参数检测
源代码:
it(`should pass parameters to the original engine instance`, () => { expect(originalEngineInstance).toHaveBeenCalledWith( mockPath, mockOptions, mockCallback ); });
注意观察 jest.Expect 的返回值:类型为 jest.JestMatchersShape

单步调试 expect 的调用过程:

从注释看,该函数为 spec 创建一个 expectation, 传入的 actual 为 spy 之后的版本。

构造一个 expectation,需要以上的参数。

紧接着调用 toHaveBeenCalledWith:

支持的所有方法,在 Chrome 开发者工具里能够看到:
toHaveBeenCalledWith
执行到这里来了:
所有可用的匹配器 matchers,都定义在文件 jasmine.js 里:

因此,toHaveBeenCalledWith 也算匹配器 matchers 之一。

构造一个匹配器实例:

调用匹配器工厂,构造一个匹配器实例:

其实例的运行代码如下图所示:

比较实际被调用的参数,是否和期望被调用的参数完全一致。
进入数组的比较分支:
边栏推荐
- Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。
- 贝叶斯优化核极限学习机KELM用于回归预测
- 请问一下dms的跨阿里云账户 新增实例,是不是无法新增redis ?
- 奖金池高达 20 万,RTE 2022 创新编程挑战赛正式开启
- 码蹄集 - MT2142 - 万民堂大厨
- 微信小程序获取年月日周及早上、中午、晚上
- Heilongjiang Mobile New Magic Hundred Box M411A_2+8_S905L3A_wire brush firmware package
- codeforces:808D. Array Division【二分 + 找规律】
- HCIP笔记(7)
- leetcode:743. 网络延迟时间【单源最短路 + dijkstra模板】
猜你喜欢
随机推荐
HyperBDR云容灾深度解析一:云原生跨平台容灾,让数据流转更灵活
番茄插件番茄助手下载
不需要服务器,教你仅用30行代码搞定实时健康码识别
Mysql Explain
Steady Development | Data and Insights on Mobile Game Players in Western Europe
动手学深度学习_AlexNet
推荐 7 月份 yyds 的开源项目
Heilongjiang Mobile New Magic Hundred Box M411A_2+8_S905L3A_wire brush firmware package
【TA-霜狼_may-《百人计划》】美术2.7 Metallic 与 Speculer流程
NFT blind box mining system dapp development NFT chain game construction
平稳发展 | 西欧地区手游玩家的数据和洞察
浙江数码代工M301H 免拆通刷_卡刷固件包(语音OK)
移动魔百盒CM211-1_YS代工_S905L3B_RTL8822C_线刷固件包
[TA-Frost Wolf_may-"Hundred Talents Project"] Art 2.7 Metallic and Speculer Process
湖北移动HG680-LV_S905L3B_线刷固件包
Difference between GET and POST requests
Mobile zte ZXV10 B860AV2. 1 - A_S905L2_MT7668_ wire brush the firmware package
码蹄集 - MT3029 - 新月轩就餐
SAP 电商云 Spartacus UI SSR 里 engine 和 engine instance 的区别
leetcode:743. 网络延迟时间【单源最短路 + dijkstra模板】








