当前位置:网站首页>SAP Spartacus NgExpressEngineDecorator 的工作原理
SAP Spartacus NgExpressEngineDecorator 的工作原理
2022-08-01 21:54:00 【华为云】
首先看这个 class 的 get 定义:

接收两个输入参数,类型为:
- NgExpressEngine
- SsrOptimizationOptions
返回一个包装后的 NgExpressEngine
NgExpressEngine 是 Spartacus 自己创建的类型,本质是一个函数,输入参数为 NgSetupOptions,返回类型为 NgExpressEngineInstance.

后者又是一个函数,作为 ExpressEngine 的执行实例,接收 filePath,option 和 callback 作为参数。

一一对应:

返回一个新的函数,接收 E 即标准的 NgExpressEngine 的输入参数作为输入参数,同时将原来的两个输入参数 NgExpressEngine 和 Spartacus optimization 值存储起来:
稍后,在 server.ts 里,我们调用这个被包装之后的 ngExpressEngine,此时,输入参数为一个对象,字段为 bootstrap,这个对象就是图 E:NgSetupOptions


此时,执行函数体:
Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。
调用 get 方法时传入的值,通过闭包存储在此:
三个点,就是将若干对象的不同名字段进行合并,最终结果:

其中闭包里的第一个输入参数,即是标准的 ngExpressEngine:
这里就是 Angular 标准的实现了,我们不操心:
注意返回的类型:
创建 OptimizationEngine 实例:
最后,返回一个新的函数 renderResponse,且该函数执行时,执行上下文为 OptimizedSsrEngine 本身:

从现在开始,this.engines 指向 Spartacus 自己的 renderResponse 函数了:

边栏推荐
- AIDL communication
- Based on php online examination management system acquisition (php graduation design)
- 易周金融分析 | 银行ATM机智能化改造提速;互联网贷款新规带来挑战
- 回收租凭系统100%开源无加密 商城+回收+租赁
- 【移动Web】移动端适配
- MySQL related knowledge
- 今年的很美味
- leetcode 204. Count Primes 计数质数 (Easy)
- The Microsoft campus ambassador to shout you to autumn recruit!
- 小程序容器+自定义插件,可实现混合App快速开发
猜你喜欢

Chapter 12, target recognition of digital image processing

【C语言实现】两种计算平均成绩题型,博主精心整理,值得一读

Small program -- subcontracting

groupByKey和reduceBykey的区别

render-props and higher order components

上传markdown文档到博客园

2022 版 MySQL 巅峰教程,收藏好,慢慢看

LeetCode952三部曲之二:小幅度优化(137ms -> 122ms,超39% -> 超51%)

File operations of WEB penetration

FusionGAN:A generative adversarial network for infrared and visible image fusion article study notes
随机推荐
FusionGAN:A generative adversarial network for infrared and visible image fusion文章学习笔记
19 Lectures on Disassembly of Multi-merchant Mall System Functions - Invoice Management on the Platform
SOM网络2: 代码的实现
[ASM] Bytecode Operation MethodWriter
Unity Shader general lighting model code finishing
作业8.1 孤儿进程与僵尸进程
shell programming conventions and variables
SAP ABAP OData 服务如何支持删除(Delete)操作试读版
Implementation principle of VGUgarbage collector (garbage collector)
小程序--分包
【C语言实现】最大公约数的3种求法
seaborn笔记:可视化统计关系(散点图、折线图)
2022 版 MySQL 巅峰教程,收藏好,慢慢看
基于php影视资讯网站管理系统获取(php毕业设计)
scikit-learn no moudule named six
用户体验 | 如何度量用户体验?
教你VSCode如何快速对齐代码、格式化代码
自建 Prometheus 采集腾讯云容器服务监控数据最佳实践
迁移学习——Discriminative Transfer Subspace Learning via Low-Rank and Sparse Representation
还在纠结报表工具的选型么?来看看这个