SAP 電商雲 Spartacus UI 產品明細頁面路由路徑的自定義配置
如下圖所示,為了減少 SAP 電商雲 Spartacus 客戶實施時不必要的配置,Spartacus 將不少頁面的路由路徑的預設配置,定義在如下的 default-routing-config.ts 檔案裡:
修改之後,產品明細頁面和 homepage 的產品超連結都一齊變更了:
這個預設配置什麼時候被讀取,並且如何被解析的呢?
如果僅僅按照 product 作為關鍵字搜尋,那麼匹配結果太多了,因為這個單詞太 generic 了:
而且 RoutesConfig 這個型別,多半都是被程式碼動態解析的。
換個思路,把 product 改成 product2,看看會不會報錯:
這回尷尬了,滑鼠放上去,顯示的 url 指向 home 連結,說明 product 明細頁面的 url 根本就沒有生成,這條路也行不通。
再根據 paramsMapping 搜尋,因為我們的程式碼,肯定在某處,會解析這個欄位:
果然,就在 semantic-path.service.ts 裡:
在 semantic-path.service.ts 裡新增如下列印語句:
我們看下第一行輸出,這個 / 和 login 是怎麼被解析的。
在 Login.componment.html 裡有個 pipe:
遇到下面這行程式碼:
<ng-template #login> <a role="link" [routerLink]="{ cxRoute: 'login' } | cxUrl">{{ 'miniLogin.signInRegister' | cxTranslate }}</a> </ng-template>
就會讀取 Spartacus 裡的配置,把基於語義的路由配置,轉換成 url.
從 routingConfigService 裡讀取配置:
login 頁面 url 搞清楚了,那麼 product 頁面呢?
奇怪,如果直接訪問如下 url:
http://localhost:4200/powertools-spa/en/USD/jerryproduct/3881018/Angle Grinder RT-AG 115
頁面開啟後,沒有看到和 product 相關的執行邏輯:
那麼 Spartacus 怎麼知道要載入 product 明細頁面呢?
我們後續的文章會分享。
更多Jerry的原創文章,盡在:"汪子熙":