跳至主要內容
×

SPA 有哪些效益與開發挑戰?

SPA(單頁應用程式)的主要效益,是不必反覆重新載入整個頁面,就能更新內容,讓連續操作更流暢;採用前後端分離架構時,也有利於團隊分工。代價則是首次載入可能較慢,以及 JavaScript 動態內容的搜尋引擎可讀性需要處理。因此,SPA 適合重視互動的應用,但不能只因為「切換順暢」,就認定它在所有載入情境下都比較快。

互動更流暢,關鍵在於只更新需要的內容

傳統整頁載入的操作方式,與 SPA 的局部更新有所不同。SPA 透過 JavaScript 與非同步請求取得資料,再更新頁面中的相關內容,不必每次操作都重新載入整頁。材料以點擊按鈕或導覽為例:若只需取得部分資料,就能減少對操作流程的打斷,提供接近原生應用程式的體驗。

這項特性適合社群平台、電子商務網站及線上工具等高互動場景。不過,這些是適用情境的例子,不代表同類網站都必須採用 SPA;判斷重點仍是產品是否需要頻繁更新內容與連續互動。

前後端分工有利並行,但須符合架構條件

Welly 的材料指出,在其描述的前後端分離架構下,前端負責使用者介面與互動邏輯,後端負責資料及 API。這樣的責任劃分讓雙方可以並行工作,有助於開發進度與程式碼維護。

因此,應把這項效益理解為採用相應分工模式的優勢,而不是只要把網站做成單頁,就會自動縮短工期。評估時可先確認前後端是否依上述方式分工,再判斷這項優勢是否適用。

首次載入與後續操作,必須分開評估

SPA 後續操作可以只更新局部內容,但第一次造訪時,若需要載入較多應用資源,等待時間仍可能偏長。這也是「操作流暢」與「首次開啟快速」不能畫上等號的原因。材料提出兩種改善方向:

  • 程式碼分割:將應用資源拆成較小模組,減少初始需要下載的檔案。
  • 懶載入:在需要時才載入相應資源,避免所有內容都集中於首次造訪下載。

依賴搜尋曝光時,要處理動態內容的可讀性

傳統 SPA 的內容多由 JavaScript 動態產生,搜尋引擎可能不容易直接讀取。材料提出伺服器端渲染(SSR)作為改善方向:由伺服器預先產生 HTML,再傳送至瀏覽器,讓搜尋引擎較容易理解頁面內容與結構。

對需要搜尋曝光的網站而言,渲染方式應與互動需求一起評估。這裡能支持的效益是改善內容可讀性,不應延伸成採用 SSR 就保證排名提升,或所有 SEO 問題都會消失。

SPA 的網路各方意見

採用 SPA 一定能減輕伺服器負擔嗎?

不一定。Welly 認為,SPA 在首次載入後,若多數資料互動由客戶端處理,可能減少伺服器負載與資源消耗。不過,這項說法有其互動方式的前提,不能推論所有 SPA 都會降低伺服器負擔;材料也沒有提供可比較的負載數據。

SPA 的離線支援比較好,代表斷網後仍可使用嗎?

不能一概而論。Welly 將較佳的離線功能支援列為 SPA 相較傳統網站的可能優勢,但提供的材料沒有說明離線功能如何實作,也沒有界定哪些操作在斷網後仍可使用。因此,評估時不能只憑 SPA 架構就認定應用具備完整離線能力。

Depictr 適合作為 SPA 搜尋可讀性的解法嗎?

不宜依這篇歷史文章直接選用。iThome 的文章曾介紹在 Laravel 加 Inertia 網站使用 Depictr,僅在爬蟲請求時渲染 HTML;但文章於 2021 年 3 月 19 日更新指出,該套件已停止維護且不建議使用。材料未提供其現況,也不足以證明它能解決所有 SEO 問題。

參考資料

  1. SPA 網頁是什麼?SPA 網頁 3 大效益打造更佳用戶體驗welly.tw · 2025-01-23T14:41:51.245Z — 討論:採用 SPA 一定能減輕伺服器負擔嗎?;SPA 的離線支援比較好,代表斷網後仍可使用嗎?
  2. Day 29 用 Depictr 做 SSR,解決 Inertia.js 的 SEO 問題ithelp.ithome.com.tw — 討論:Depictr 適合作為 SPA 搜尋可讀性的解法嗎?
把問題繼續聊下去

一起討論 0 則留言

你遇到什麼狀況?留下問題或實作經驗,一起找到下一步。

目前還沒有留言,歡迎開始第一個討論。

留下你的想法

← 繼續找答案
聊聊你的需求

從你的品牌開始聊。

告訴我你的網站,以及你希望達成的目標。

用 LINE 聊聊 tony@procrustes.info