這裡的 SPA 當然不是溫泉之類的,是指 Single Page App
簡單來說,在web 上不進行換頁的單純由 client 來繪制的就算是 spa。
也如果非靜態的呢,可能就會以 ajax 的非同此方式來進行背後的資料更新,再由 client 來繪制。
相較於傳統的 ssr 方式,優點有,減少頻寬的浪費、較為好的使用者體驗。
而缺點就是 seo 上缺乏支援及開發上相對比較麻煩尤其是和網頁認證、保護內容之類的。
如果你是開發 web app 之類,也就是服務為主的,就忘了 seo 吧,如果不是,而是 cms 新聞類的?
那 seo 還是不能說放棄就放棄,也因此有了 hybrid 的出現。
當然 ssr 也是一個選項,或是使用付費的爬蟲網站,來幫你把 spa 先 render 成靜態的也行(有錢的話,這個大概是最簡單的方法了。)
hybrid 簡單來說,就是 server 把內容先以 隱藏方式在 body 中出現,seo 的 robots 們還是看得到,但 users 看不到,
然後再以 js parse 它加上 virtual-dom 的方式繪制出來,這樣不但 seo 也有了,也有了 spa 的特性,就是很麻煩。
如圖:
而且準備功夫是兩倍。 像是 router 就必須在 server 和 js 端都要有,不然就不是 spa 了。
另外 error 或是 session timeout 的問題,也必須有 server render 端的版本、js 端的版本,或是 lazy 點,全導到同一個靜態頁面。
複雜度就取決於使用者體驗的好壞。
幸運的是,目前有許多的 js 框架在處理這些問題上,都很好用(雖然還是很麻煩就是了)。