1. 程式人生 > 其它 >SAP 電商雲 Spartacus UI 產品明細頁面路由路徑的自定義配置

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的原創文章,盡在:"汪子熙":