SPA的缺點是什么?不利于SEO,首屏打開速度更慢。同時,與業務模塊之間的關聯緊密,不好拆分。對于桌面網站,大都跑在網絡環境較好的情況下,優勢并不明顯,而劣勢卻完全凸顯。SSR可以部分解決問題,但是SSR性能并非最優,并且成本也不低。因此算不上最優解。而且很多桌面網站在SPA技術之前就已經搭建好了,相關的技術問題也成熟并夠用,配合Gulp之類的也能很好解決工程化的問題。
SPA框架要實現得優雅,離不開現代化的API(瀏覽器特性或語言特性)。對此,移動端的環境比桌面端好不少,很多桌面端網站的兼容性要求的包袱大大限制了框架的應用。SPA框架的歷史比絕大部分桌面網站的歷史短,網站還沒發展到需要被SPA革命的時候,后接手項目的開發者的重構動力還沒達到非得使用SPA的程度。
國內微信和 QQ 等應用內置瀏覽器(至少 iOS 是這樣)的毒瘤屬性,如果你是用 pushState 改變的 url,那么分享出去的時候還會是最初點進去的那個 url,這就導致,如果你想讓你的內容能被正確分享,不要分享出去的時候以為是 A,結果別人點開是 B,那么你至少對「具體內容頁面」(比如一篇文章、一個帖子)不能采用框架內部路由,而只能用最原始的 href 改變 url。很多網站沒有做成SPA并不是技術原因,而大多數是業務劃分和遺留代碼的問題。
很多網站不同的業務或者產品對應不同的業務和開發部門,因此他們會獨立開發自己業務的網頁(目前基本上都選擇SPA了),然后再去和主站集成,這里“集成”一般都會直接在主站添加入口鏈接。有時候選擇多頁面模式也是刻意為之,如果業務復雜多樣,在一個SPA上加載太多東西勢必會影響網站性能,將不同業務做成多個SPA,對用戶體驗影響并不大,但是會簡化業務的獨立開發、部署和維護。
另外就是遺留代碼的問題。前端技術更新太快,一般新成立的項目都會選擇使用新的框架語言,遺留代碼都是舊的技術問題,如果想要做成SPA,那意味要在一個頁面加載多個框架,必然會影響性能,因此會選擇多頁面,然后再做舊頁面到新頁面的遷移。
目前比較多被提及的前端微服務化,是希望多個前端服務能夠整合到一個SPA上,但是由于技術問題目前還是有局限。網站設計的相關東西都是不斷更新的,如果出現一些新的東西也有可能沒有那么快適用,所以還要選擇合適的。
本文地址:http://knowyourextract.com//article/2442.html