共计 700 个字符,预计需要花费 2 分钟才能阅读完成。
入口:所有的 regular route 都应用 universal engine:
简而言之,Angular Universal 是 Angular 的预渲染解决方案。
在一般的单页应用程序中,咱们通常将数据带到客户端,而后在客户端最初一秒构建代表该数据的 HTML。
然而在某些状况下,出于充沛的理由,咱们可能心愿提前进行渲染,例如在服务器上或在应用程序构建时:这正是 Angular Universal 容许咱们做的。
express 的 response 实现:
express application 的实现:
动态资源,都从 browser 目录下获取:
渲染结束的 callback:
而后就来到 Spartacus 代码了:view.js 的 render 办法调用 SAP Spartacus 实现的回调函数 renderResponse
:
失去 rendering key:/
139 行,判断申请是否被 cache 过。
如果正在渲染或者并发渲染数达到下限,则 fallback 到 CSR:
判断是否 timeout:
shouldTimeout 返回 true,必须下列任意一个条件成立:
- this.ssrOptions === null
- this.getRenderingStrategy(request) === RenderingStrategy.ALWAYS_SSR);
这里咋就 fallback 到 CSR 了?
如果客户设置了 timeout,那么就用 setTimeout
设置一个客户指定的超时工夫距离,而后进入 else 分支的下一行,开始失常的 SSR 渲染。如果 SSR 足够疾速,可能在 timeout 产生之前完结?
起因:A value of 0 will instantly return the CSR page.
正文完