1. 程式人生 > 其它 >SAP 電商雲的 Spartacus Storefront 如何配置多個 JavaScript Application

SAP 電商雲的 Spartacus Storefront 如何配置多個 JavaScript Application

本文介紹如何配置多個 endpoint 以使用多個 JavaScript 店面。

具體步驟

將所有端點配置為指向 JS Storefront 服務。

  • www.brand1.com → Javascript 店面
  • www.brand2.com → Javascript 店面

在 JavaScript service properties 中配置 endpoint 到店面的對映。

在雲門戶中,選擇 environment,然後選擇 service configuration 檢視配置 JavaScript 店面。

按以下格式新增您的屬性:

jsapps.<application>.severname.<index>=<server name>

例如:

jsapps.app1.servername.1=www.brand1.de
jsapps.app2.servername.0=www.brand2.com
jsapps.app2.servername.1=www.brand2.de

如果不提供任何配置,預設情況下,對伺服器名稱 <application.name.*> 的請求將路由到該特定應用程式。

例如,app1 和 app2 應用的對映方式如下:

  • 伺服器名稱 app1.* 的請求被路由到 app1 應用程式,
  • 伺服器名稱 app2.* 的請求被路由到 app2 應用程式。

<server name>

變數要麼是準確的伺服器名稱,要麼是 Nginx <server_name> 指令的正確正則表示式。有關詳細資訊,請參閱 http://nginx.org/en/docs/http/server_names.html 非 SAP 站點上釋出的資訊。

在 CCV2 上啟用 Spartacus SSR ( Server Side Rendering,伺服器端渲染) 的配置方法,在檔案 js-storefront/manifest.json 內新增下列設定:

{
  "applications": [
      {
          "name": "<your storefrontapp name>",
          "path": "<your storefrontapp path>",
          "ssr": {
                "enabled": true,
                "path": "dist/<your storefrontapp name>/<your storefrontapp name>-server/main.js"
          }
      }
  ]
}

使用客戶端呈現 (CSR),網站在瀏覽器中呈現,而不是在伺服器端。 因此,Web 伺服器通過傳送包含 JavaScript 程式碼的輕量級 HTML 響應來響應連線請求。 瀏覽器通過在客戶端呈現程式碼並將其呈現在網頁上來建立內容。

因此,需要在上述的 manifest.json 檔案裡新增下列設定:

{
  "applications": [
      {
          "name": "<your storefrontapp name>",
          "path": "<your storefrontapp path>",
          "csr": {
                "webroot": "dist/<your storefrontapp name>/browser/"
          }
      }
  ]
}

csr.webroot 的欄位值應該和 angular.json 檔案中 projects.<application_name>.architect.build.options.outputPath 的值一致。

配置完成後,所有定義在 webroot 欄位中的檔案會被部署。

在 manifest.json 裡還能為某一具體的 Application,指定 Node.js 版本:

{
    "applications": [
        {
            "name": "cxlive",
            "path": "cxlive"
        },
        {
            "name": "app1",
            "path": "app1"
        },
        {
            "name": "app2",
            "path": "app2",
            "nodeVersion": "11"
        }
    ],
}