SAP 电商云 Spartacus UI SSR 里 engine 和 engine instance 的区别

简介: SAP 电商云 Spartacus UI SSR 里 engine 和 engine instance 的区别

传入 originalEngine 到装饰器 decorateExpressEngine 里:


image.png


传出的是一个 engine 函数,engine 函数包括了 original Engine 这个函数,然后调用 engine 函数,同时将 Engine 参数传入,得到第二个 engine instance 函数。


最后的服务器端渲染,就是该 engine instance 函数负责处理。


我们再来看看生产版本的 engine 实现原理:传入 decorator 的第一个 engine 实例,来自 Angular @nguniversal/express-engine:


image.png


这个装饰器返回一个新的函数。


(1) NgExpressEngine 的输入参数

(2) Spartacus 开发团队引入的优化参数,通过闭包传入

(3) Angular 标准的 NgExpressEngine 实例


image.png


在实际的生产代码里,通过装饰器的 get 方法,传入 nguniversal/express-engine 标准的 engine,返回 ngExpressEngine:


image.png


然后这个 ngExpressEngine 被作为参数,传入 server.engine 处理参数:


image.png


再看单元测试里的代码:传入装饰器的第二个参数为 null,意思是不使用 optimization engine:


image.png


第135行代码返回的是下图第47行的函数体本身:


image.png


如果我们观察返回的 engine 实例,就能发现它内部包含两个闭包,存储了装饰器调用时,传入的 originalEngine 和 optimization option 的值:


image.png


接下来执行第136行代码,即 135行装饰器返回的新函数的函数体:


image.png


当然,因为 ngExpressEngine 已经被 mock 过了,所以返回 callFake 指定的 mock 版本的实现:


image.png


因为传入的 optimization option 为空,所以不使用 optimization engine,因此返回 original engine instance:

image.png

相关文章
|
1月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
27 0
|
1月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
13 0
|
1月前
|
前端开发 JavaScript API
SAP UI5 sap.ui.require.toUrl 的作用介绍
SAP UI5 sap.ui.require.toUrl 的作用介绍
28 0
|
1月前
|
JSON 前端开发 测试技术
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
21 0
|
1月前
使用 SAP UI5 Event Bus 机制,修复 SAP UI5 分页显示数据的一个 bug 试读版
使用 SAP UI5 Event Bus 机制,修复 SAP UI5 分页显示数据的一个 bug 试读版
20 0
|
3月前
|
缓存 JavaScript 前端开发
如何理解 SAP UI5 的 sap.ui.define 函数?
如何理解 SAP UI5 的 sap.ui.define 函数?
45 0
|
16天前
什么是 SAP ABAP 里的 Subscreen
什么是 SAP ABAP 里的 Subscreen
13 1
什么是 SAP ABAP 里的 Subscreen
|
1月前
|
开发者 UED
关于 SAP UI5 sap.m.Column 的 demandPopin 属性
关于 SAP UI5 sap.m.Column 的 demandPopin 属性
15 0
|
2月前
|
JSON 数据格式
SAP UI5 Class sap.ui.model.Context 的作用介绍
SAP UI5 Class sap.ui.model.Context 的作用介绍
29 0
|
3月前
|
JSON 开发者 数据格式
关于 SAP Spartacus LandingPage2Template 区域的 layout 设计实现
关于 SAP Spartacus LandingPage2Template 区域的 layout 设计实现
24 0

热门文章

最新文章