关键词搜索

源码搜索 ×
×

2. SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试

发布2022-10-22浏览452次

详情内容

入口:所有的 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.

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载