什麼是 SPA?
單頁應用程式 (SPA) 與傳統頁面的不同之處在於它是在用戶端呈現並且主要由 JavaScript 驅動,依賴 Ajax 呼叫來載入資料和動態更新頁面。在單頁載入時一次擷取大部分或所有內容,並根據使用者與頁面的互動,視需要非同步載入其他資源。
這減少了頁面重新整理的需要,讓使用者擁有順暢、快速且像是使用原生應用程式的體驗。
AEM SPA 編輯器允許前端開發人員建立可整合到 AEM 網站的 SPA,從而允許內容作者輕鬆編輯 SPA 內容,像編輯任何其他 AEM 內容一樣輕鬆。
為什麼是 SPA?
由於 SPA 的運作本質,SPA 可以更流暢、快速且像是原生應用程式,不僅對網頁訪客而且對行銷人員和開發人員來說都是一種極具吸引力的體驗。
訪客
- 訪客在與內容互動時希望獲得類似原生的體驗。
- 有明確資料代表頁面生成越快,就越可能發生轉換。
行銷人員
- 行銷人員希望提供豐富的、類似原生的體驗,以吸引訪客與內容完全互動。
- 個人化可以使這些體驗更具吸引力。
開發人員
- 開發人員希望清楚分開內容和展示之間的考量點。
- 清楚分開使系統更具可擴展性,並允許獨立的前端開發。
SPA 如何運作?
SPA 背後的主要概念是減少對伺服器呼叫和依賴,以儘量減少伺服器延遲造成的作業耽擱,從而使 SPA 接近原生應用程式的回應能力。
在傳統的循序網頁中,僅載入即時頁面所需的資料。這表示當訪客移至另一個頁面時,將呼叫伺服器以取得額外資源。當訪客與頁面上的元素互動時,可能需要額外的呼叫。由於頁面必須趕上訪客的要求,因此這些多次呼叫可能會讓人產生延滯或延遲的感覺。
為了獲得更流暢的體驗,接近訪客對行動原生應用程式的期望,SPA 會在第一次載入時為訪客載入所有必要的資料。雖然這在開始時可能需要較長的時間,但之後就不需要額外呼叫伺服器。
透過在用戶端呈現,頁面元素回應更快,且訪客與頁面的互動是即時的。任何可能需要的額外資料會以非同步方式呼叫,以儘量提高頁面速度。
SPA 的內容編輯體驗
當建置 SPA 以使用 AEM SPA 編輯器時,內容作者在編輯和建立內容時不會注意到任何差異。可以使用常用的 AEM 功能,作者的工作流程無需變更。
-
在 AEM 編輯 WKND SPA 專案應用程式。
http://localhost:4502/editor.html/content/wknd-spa-react/us/en/home.html
-
選取文字元件,並注意工具列看起來像任何其他元件。選取 編輯。
-
在 AEM 中正常編輯內容,並注意變更已保留。
-
使用資產瀏覽器將新影像拖放到影像元件中。
-
變更已保留。
如同任何非 SPA AEM 應用程式,支援其他編寫工具,例如在頁面上拖放其他元件、重新排列元件和修改版面。
SPA 應用程式和 AEM SPA 編輯器
體驗SPA如何為使用者運作,然後檢查SPA頁面,有助於更清楚瞭解SAP應用程式如何在AEM中搭配SPA編輯器運作。
使用 SPA 應用程式
-
將 WKND SPA 專案應用程式載入到發佈伺服器,或使用頁面編輯器 頁面資訊 選單的 如發佈時檢視 選項。
http://<host>:<port>/content/wknd-spa-react/us/en/home.html
請注意頁面結構,包括導覽到子頁面、選單和文章卡片。
-
使用選單導覽到子頁面,可以看到頁面立即載入,無需重新整理。
-
開啟瀏覽器內建的開發人員工具,並在您瀏覽子頁面時監控網路活動。
當您在應用程式中從一個頁面移動到另一個頁面時,流量非常小。該頁面不會重新載入,只會要求新影像。
SPA 完全在用戶端管理內容和路由。
-
如果尚未載入,請將 WKND SPA 專案應用程式載入至發佈伺服器,或使用頁面編輯器 頁面資訊 選單的 如發佈時檢視 選項。
http://<host>:<port>/content/wknd-spa-react/us/en/home.html
-
使用瀏覽器的內建工具檢視頁面的來源。
-
來源的內容有限。
- 頁面的內文中沒有任何內容。它主要由樣式表和對各種指令碼 (例如
clientlib-react.min.js
) 的呼叫所組成。 - 這些指令碼是此應用程式的主要驅動程式,負責呈現所有內容。
- 頁面的內文中沒有任何內容。它主要由樣式表和對各種指令碼 (例如
-
使用瀏覽器的內建工具檢查頁面。查看完全載入之 DOM 的內容。
-
切換到檢查器中的「網路」索引標籤並重新載入頁面。
忽略影像要求,注意為頁面載入的主要資源是頁面本身、CSS、React JavaScript、其相依性,以及頁面的 JSON 資料。
-
在新索引標籤中載入
home.model.json
。http://<host>:<port>/content/wknd-spa-react/us/en/home.model.json
AEM SPA 編輯器使用 AEM 內容服務將頁面的全部內容以 JSON 模型傳遞。
透過實作特定的介面,Sling 模型為 SPA 提供必要的資訊。JSON 資料的傳遞工作向下委派給每個元件 (從頁面到段落到元件等)。
每個元件選擇它公開的內容以及呈現方式 (伺服器端使用 HTL 或用戶端使用 React 或 Angular)。本文章重點介紹使用 React 進行用戶端呈現。
-
此模型還可以將頁面群組在一起,以便同步載入,從而減少所需的頁面重新載入次數。
在 WKND SPA 專案應用程式範例中,
home
、page-1
、page-2
和page-3
頁面是同步載入的,因為訪客通常會造訪所有這些頁面。此行為不是強制性的,而且完全可定義的。
-
若要檢視此行為差異,請重新載入
home
頁面並清除檢查器的網路活動。導覽到頁面選單中的page-1
,可以看到唯一的網路活動是要求page-1
的影像。page-1
本身不需要載入。