日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP 电商云 Spartacus UI Proxy Facade 的一个实际例子

發布時間:2023/12/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP 电商云 Spartacus UI Proxy Facade 的一个实际例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何理解 SAP 電商云 Spartacus UI 中的 proxy facade?

Jerry 這篇文章什么是 SAP 電商云 Spartacus UI 的 proxy fa?ade提供了理論上的解釋。

本文介紹一個實際例子。

當我們打開如下 url 時,默認是不會觸發 Quick Order Core module 的加載的,因為我們根本沒有使用到 Quick Order 任何功能:

http://localhost:4299/electronics-spa/en/USD/

當然,我們仍然有辦法,在 homepage 的 app.module.ts 里手動編寫一些代碼,這些代碼需要 Quick Order core module 被加載之后才能正常執行:

上面代碼注入的依賴 QuickOrderFacade,雖然是 Quick Order root module 的一部分,被正常加載,但是 QuickOrderFacade 只是一個 Abstract Class,需要 core module 里提供的具體實現才能繼續執行。因此,加上了上述代碼之后,我們訪問 Spartacus UI 的 homepage,也會觸發 Quick Order Core module 的加載。

上述結論可以在 Chrome 開發者工具 network 標簽頁里觀察到 Quick Order Core Module 的加載:

以及對應調試代碼的打印:

在運行時,當 AppModule 作為入口 module 被加載時,Angular 框架會調用 _resolveInjectorDefTypes 解析器構造函數里聲明的依賴:

此時因為 QuickOrder core module 尚未加載,因此通過 QuickOrderFacade 提供的工廠方法 FacadeFactory 去提供依賴:

這里調用標準的來自 Angular/core 的 inject,結合傳入的 descriptor,進行注入:

調用 inject 注入 FacadeFactoryService 的結果是什么?

結果就是得到了 FacadeFactoryService 的一個實例,且該實例的每個屬性字段也均被注入了對應的實例了:

這里我們準備創建 cartQuickOrderCore 的具體實現,首先需要檢查這個 feature 是否已經啟用:

this.cmsConfig.featureModules 里確實存在 cartQuickOrder 的記錄:

這里試圖獲取 QuickOrderFacade 的實現:

最終是通過 QuickOrderService 注入的。

此時 Quick Order core module 應該已經加載了。

我們來具體看一下到底是哪行代碼觸發的 core module 加載?

入口:

這一行的下一個函數調用觸發延遲加載:

最終位置:

更多Jerry的原創文章,盡在:“汪子熙”:

總結

以上是生活随笔為你收集整理的SAP 电商云 Spartacus UI Proxy Facade 的一个实际例子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。