由於網站訪問者訪問者訪問的頁面在要求時不會動態生成,但預先生成並用作靜態HTML文件,因此推出新功能和內容的過程看起來與“傳統” Web應用程序中有點不同。
本地開發:可以在本地完成新功能的發展。
NUXT.JS配備了非常有效的工具,可以支持具有熱模塊更換和實時重新加載的Dev Server之類的出色開發人員體驗。
產品的內容與源代碼一起存儲在GIT存儲庫中,因此開發人員可以在實施和測試過程中使用實際產品數據。
API端點應使用一些模擬服務器(例如WireMock或Mockserver)固定,以便獨立於實際外部系統工作。對於OpenID連接身份驗證,請考慮在本地設置KeyCloak。
注意:此示例項目不包括任何模擬服務器。
預取決於內容:每次都必須在網站上發布新的或更新的產品數據,必須在GIT存儲庫中更新預取的內容JSON文件,然後才能生成新版本的static HTML文件。
特殊Node.js內容腳本將連接到Salesforce,並通過Salesforce REST API獲取最新數據。內容JSON文件將相應地更新,並且可以將其投入到GIT存儲庫中。
這完全取決於您在執行此腳本的何時何地。例如,它可以作為github動作或在Travis CI上的CI過程中運行。
注意:Salesforce只是從中獲取內容的潛在數據源的一個示例。內容文件也可以從任何其他數據源創建。
發布靜態HTML文件: GIT存儲庫中的每個提交代表網站的某個實現和內容狀態,可能會發布。
構建過程將源代碼轉換為優化的塊,並通過計算實現的頁面組件和預取的內容文件的所有可訪問路由來生成靜態HTML文件。
最後,所有生成的網站文件都可以發佈到任何Web服務器或內容交付網絡,例如NetLify。
注意:構建過程還可以利用API請求來加載git存儲庫中內容文件中未存儲的內容。
通過API的動態增強:將網站加載到瀏覽器中時,訪問者是靜態HTML文件。這是非常快的,因為服務器上沒有什麼需要動態生成的。
一旦網頁加載了動態JavaScript啟動並使用動態功能增強頁面。這可以是購物車或顯示個性化用戶內容之類的功能。
可以通過從瀏覽器發送API請求來獲取動態數據。訪問者可以使用OAUTH 2.0和OpenID Connect(OpenID Connect)等標準協議進行身份驗證,以允許網站介紹個人內容。
為什麼?它可以在閃電社區中使用真正的客戶用戶登錄。
如果您打算使用內容更新腳本,並且如果您想在用戶在網站上註銷時,則需要此步驟。
為什麼?它將自定義對象的“產品類別”添加到您的Salesforce org,並在product2對像上安裝自定義字段,以使您定義產品所屬的類別。它還安裝了閃電網絡組件,該組件將在特殊的註銷社區頁面上使用,該頁面將自動登錄用戶。
下載並安裝Salesforce CLI。
在目錄salesforce
中打開終端。
將Salesforce CLI連接到您的Salesforce組織。
sfdx force:auth:web:login -a MyOrg -s
將SFDX項目部署到您的Salesforce組織。
sfdx force:source:deploy -p force-app
為什麼?它允許API服務器和內容腳本與特定的技術用戶連接到Salesforce,該技術允許個人訪問控制。
為什麼?需要在OpenID連接身份驗證流期間顯示登錄頁面。
如果您想在網站上註銷時為社區用戶設置自動註銷,請執行以下其他步驟:
為什麼?這是針對網站訪問者的OpenID Connect Authentication所必需的,並允許API服務器和內容腳本以安全的方式連接到Salesforce。
此步驟是可選的,因為GIT存儲庫已經包含一些示例產品和類別進行演示。
您應該在Salesforce org中有一些product2對象的記錄,這些記錄是活動的,並且在某些用於內容更新的價格簿中具有價格簿條目。
您還可以創建一些產品類別並將其分配給您的產品。
注意:腳本要求Salesforce元數據部署在您的組織中。
在目錄content-scripts
中打開終端。
設置以下環境變量。
姓名 | 描述 |
---|---|
salesforce_instance_url | Salesforce實例的基本URL(模式https://xx##.salesforce.com ) |
salesforce_api_version | 使用Salesforce API版本 |
salesforce_token_endpoint | OAuth 2.0 Salesforce實例的令牌端點 |
salesforce_client_id | 連接應用程序的消費者鑰匙(從應用程序視圖之前複製) |
salesforce_client_secret | 連接應用程序的消費者秘密(從應用程序視圖中復制) |
salesforce_username | 集成用戶的用戶名 |
salesforce_password | 集成用戶 +安全令牌的密碼(只需加入兩個) |
salesforce_price_book_name | 選修的。價格簿要使用。默認值:“標準價格簿” |
例子:
SALESFORCE_INSTANCE_URL=https://eu25.salesforce.com
SALESFORCE_API_VERSION=49.0
SALESFORCE_TOKEN_ENDPOINT=https://login.salesforce.com/services/oauth2/token
SALESFORCE_CLIENT_ID=3MVG9...ru7XA
SALESFORCE_CLIENT_SECRET=17DAD...0110F
[email protected]
SALESFORCE_PASSWORD=abcde...KiQ9n
提示:您可以將這些變量分配放在名為.env
的文件中content-scripts
以進行開發和測試。
安裝node.js依賴項。
yarn install
運行腳本以更新目錄content
中的類別和產品JSON文件。
yarn start
在目錄api
中打開終端。
設置以下環境變量。
姓名 | 描述 |
---|---|
港口 | 本地服務器端口要聆聽。默認值:3000 |
salesforce_instance_url | Salesforce實例的基本URL(模式https://xx##.salesforce.com ) |
salesforce_api_version | 使用Salesforce API版本 |
salesforce_token_endpoint | OAuth 2.0 Salesforce實例的令牌端點(不是社區) |
salesforce_jwks_endpoint | OpenID Connect JSON Web密鑰設置Salesforce Lightning社區的終點 |
salesforce_issuer_url | Salesforce發行的ID令牌中包含的發行人URL |
salesforce_client_id | 連接應用程序的消費者鑰匙(從應用程序視圖之前複製) |
salesforce_client_secret | 連接應用程序的消費者秘密(從應用程序視圖中復制) |
salesforce_username | 集成用戶的用戶名 |
salesforce_password | 集成用戶 +安全令牌的密碼(只需con繞兩個) |
salesforce_price_book_name | 選修的。價格簿要使用。默認值:“標準價格簿” |
Security_cors_origin | Web應用程序的基本URL允許訪問服務器。 |
例子:
PORT=4000
SALESFORCE_INSTANCE_URL=https://eu25.salesforce.com
SALESFORCE_API_VERSION=49.0
SALESFORCE_TOKEN_ENDPOINT=https://login.salesforce.com/services/oauth2/token
SALESFORCE_JWKS_ENDPOINT=https://georgwittberger-developer-edition.eu25.force.com/id/keys
SALESFORCE_ISSUER_URL=https://georgwittberger-developer-edition.eu25.force.com
SALESFORCE_CLIENT_ID=3MVG9...ru7XA
SALESFORCE_CLIENT_SECRET=17DAD...0110F
[email protected]
SALESFORCE_PASSWORD=abcde...KiQ9n
SECURITY_CORS_ORIGIN=http://localhost:3000
提示:您可以將這些變量分配放在名為.env
的文件中api
以進行開發和測試。
安裝node.js依賴項。
yarn install
運行服務器。
yarn start
在項目根目錄中打開終端。
設置以下環境變量。
姓名 | 描述 |
---|---|
api_url | API服務器的基本URL |
logout_url | 選修的。登錄頁面URL Salesforce Lightning社區 |
oauth2_authorize_endpoint | OAuth 2.0 Salesforce Lightning社區的授權終點 |
oauth2_userinfo_endpoint | API服務器的用戶信息端點 |
oauth2_client_id | 連接應用程序的消費者鑰匙(從應用程序視圖之前複製) |
oauth2_scopes | 在身份驗證期間請求的OAuth 2.0範圍,逗號分隔 |
例子:
API_URL=http://localhost:4000
LOGOUT_URL=https://georgwittberger-developer-edition.eu25.force.com/s/logout
OAUTH2_AUTHORIZE_ENDPOINT=https://georgwittberger-developer-edition.eu25.force.com/services/oauth2/authorize
OAUTH2_USERINFO_ENDPOINT=http://localhost:4000/userinfo
OAUTH2_CLIENT_ID=3MVG9...ru7XA
OAUTH2_SCOPES=openid,id
提示:您可以將這些變量分配放在項目根.env
中的文件中,以進行開發和測試。
注意:如果未提供變量LOGOUT_URL
則可以將用戶立即重定向到網站的註銷頁面,而無需外部往返。
安裝node.js依賴項。
yarn install
要么啟動提供實時重新加載的開發服務器...
yarn dev
...或首先生成靜態HTML文件,然後從dist
目錄中提供這些文件。
yarn generate
yarn start
在http:// localhost上打開瀏覽器:3000
麻省理工學院許可證