SAP Spartacus 服务器端渲染的单步调试
所有常規路由采用 universal engine 實現:
將 req 的 app 屬性保存到變量 app 里:
在瀏覽器里訪問 localhost:4000,該請求轉發給 app.render 函數。
這個 merge 操作,把對象 b 的屬性,全部賦給對象 a:
首先試圖從緩存中讀取 view 實例:
讀取 index 視圖實例:
得到視圖構造函數:
開始渲染:
調試模式:
調用 Universal Engine 進行渲染:
下列代碼是我們團隊同事編寫的:
在哪里渲染好的呢?
入口函數:renderResponse
this.shouldRender 判斷是否應該在服務器端渲染:
如果當前請求正在渲染,或者已經超過最大渲染并發數,那么就 fallback 到 CSR 渲染模式:
調用鉤子函數,得出當前這個請求的渲染策略:
fallback 到 CSR 了:
在 CSR 模式下,把 index.html 的請求返回給客戶端:
self 的指向:
我還沒在 Visual Studio Code 里 attach nodejs 進程,/ 的 rendering 就結束了 ?!
如果給了一個很大的 timeout 值,就不用擔心會 fallback 到 CSR 了:
此時這個 doc,里面包含的 selector 是空的:
Render an HTML document for a specific URL with specified render options:
上圖就是 express-engine.js 的 render 實現函數。
下圖:platform-server.js:
最終渲染的結果:
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的SAP Spartacus 服务器端渲染的单步调试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 魔兽世界8.0库尔提拉斯在哪 库尔提拉斯
- 下一篇: SAP Spartacus 服务器端 n