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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

SAP 电商云 Spartacus UI 支持延迟加载的新功能的入口设计

發布時間:2023/12/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP 电商云 Spartacus UI 支持延迟加载的新功能的入口设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

假設我們要為 Spartacus UI 開發一個新功能,首先,這個新功能,應該放到 feature library 文件夾里:

這個新功能的入口,放置到 Feature Module 中。

新功能通過 public_api.ts 將公有功能暴露給外部消費者。后者從 index.ts 里導入,而 index.ts 又導入 quick-order.module.ts 中的內容。

QuickOrderModule 導入 CoreModule 和 ComponentsModule,二者都是重量級 module,需要支持延遲加載。

ng-package.json 文件里,定義了該新功能的入口文件 entryFile 為 public_api.ts:

注意,在根目錄 angular.json 里,我們找不到和 quick order 相關的實現,這說明 Quick Order 并不是一個獨立的 library?

這里說明 quick order 是 cart library 的一部分:

從這里的文件夾層級結構也能說的通:

對于 QuickOrder 這個新功能來說,其入口并不是我們上圖看到的 QuickOrderModule,而是下圖所示的 QuickOrderFeatureModule,后者包含了一個輕量級的 QuickOrderRootModule 實現,而上圖看到的重量級實現 QuickOrderModule,通過延遲加載的方式,在下圖代碼第20行導入系統。

Root 文件夾里的 QuickOrderRootModule 是一個非常輕量級的實現:

僅僅包含了路由設置和 CMS Component 映射關系的維護。

Facade 層通過 index.ts 導出:

然后 public_api.ts 導出 index.ts 的全部內容:

為什么要設計這個 public_api.ts 呢?為了讓語義更加清楚。這個最佳實踐定義在此處。

  • public_api.ts 旨在枚舉和公開特定功能以供外部使用。 * index.ts 旨在作為默認導出機制來棄用絕對路徑導入。

更詳細的討論:

(1) 消歧:鑒于缺少“內部”修飾符和內部模塊增加的復雜性,需要多個 index.ts 桶文件來提供不同的內部/外部 API 表面。

(2) Angular CLI 面向用戶的工具:為了提供省力的工具默認值,需要一個公共 API 文件標準。 NG 編譯器所做的不僅僅是將所有 TypeScript 構建為 JavaScript;值得注意的是,它還會根據選擇的入口點進行搖樹。出于其他原因, index.ts 是默認的糟糕選擇。

(3) Angular 內部代碼質量:public-api 是與 Angular 消費者的契約,必須嚴格控制,伴隨著文檔變化、新測試、兼容性評估和公告的變化。為此,項目設置會自動拒絕導致 public-api 更改的代碼更改。

(4) 意識/清晰度/意圖:我認為這通常是其他評論所暗示的。歷史上,人們一直在使用 index.ts 來處理內部和外部的所有事情。當然,一個項目只能將 index.ts 用于公共 API 簽名,但這并不明顯。

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

總結

以上是生活随笔為你收集整理的SAP 电商云 Spartacus UI 支持延迟加载的新功能的入口设计的全部內容,希望文章能夠幫你解決所遇到的問題。

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