首先看这个 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 函数了:
更多 Jerry 的原创文章,尽在:” 汪子熙 ”: