当前位置:网站首页>SAP 电商云 Spartacus UI SSR 里 engine 和 engine instance 的区别
SAP 电商云 Spartacus UI SSR 里 engine 和 engine instance 的区别
2022-08-04 16:18:00 【华为云】
传入 originalEngine 到装饰器 decorateExpressEngine 里:

传出的是一个 engine 函数,engine 函数包括了 original Engine 这个函数,然后调用 engine 函数,同时将 Engine 参数传入,得到第二个 engine instance 函数。
最后的服务器端渲染,就是该 engine instance 函数负责处理。
我们再来看看生产版本的 engine 实现原理:传入 decorator 的第一个 engine 实例,来自 Angular @nguniversal/express-engine:

这个装饰器返回一个新的函数。
(1) NgExpressEngine 的输入参数
(2) Spartacus 开发团队引入的优化参数,通过闭包传入
(3) Angular 标准的 NgExpressEngine 实例

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

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

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

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

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

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

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

因为传入的 optimization option 为空,所以不使用 optimization engine,因此返回 original engine instance:
边栏推荐
- Visual Studio 2022创建项目没有CUDA模板的解决方法
- [TA-Frost Wolf_may-"Hundred Talents Project"] Art 2.7 Metallic and Speculer Process
- 【愚公系列】2022年07月 Go教学课程 028-函数小结案例(通讯录)
- 【JVM】JVM调优
- Does DMS have an interface to get the list of databases under each instance?
- 地理标志农产品需双重保护
- Crawler Xiaobai Notes (yesterday's supplement to pay attention to parsing data)
- 吴恩达机器学习[9]-神经网络学习
- For循环控制
- 电气成套设备行业如何借助ERP系统,解决企业管理难题?
猜你喜欢
随机推荐
面了三十个人,说说真实感受
面试官:多个线程执行完毕后,才执行另一个线程,该怎么做?
荐书 | 《大脑的奥秘:人人要懂的脑科学》:大脑里面有什么
shell中当basename和dirname无法满足你的需求时你一定要想到的命令
“敏捷欺骗了开发人员”
全球电子产品需求放缓 三星手机越南工厂每周只需要干 3~4 天
Request method ‘POST‘ not supported。 Failed to load resource: net::ERR_FAILED
LeetCode·85.最大矩形·单调栈
Win10 无线网卡驱动感叹号,显示错误代码56
博云入选Gartner中国云原生领域代表性厂商
跟我学 UML 系统建模
电气成套设备行业如何借助ERP系统,解决企业管理难题?
全差分运放:THS4140
HCIP笔记(6)
A detailed explanation of what is software deployment
leetcode:743. 网络延迟时间【单源最短路 + dijkstra模板】
LeetCode·每日一题·1403.非递增顺序的最小子序列·贪心
转型阵痛期,好未来减亏容易增收难?
DocuWare Platform - Content Services and Workflow Automation Platform for Document Management (Part 1)
地理标志农产品需双重保护









