單頁應用SPA是個錯誤 - gomakethings
多年來,我們行業的趨勢一直是構建單頁應用程式或 SPA。
使用 SPA,整個網站或應用程式都存在於單個 HTML 檔案中。初始載入後,應用程式的所有內容都由 JavaScript 處理。從理論上講,這應該會導致 Web 應用程式感覺與原生應用程式一樣快速和快速。
SPA適合什麼?
首先,讓我把這個問題說出來:有幾個狹義的例子說明SPA有意義,是正確的選擇。
YouTube是一個很好的例子。當你探索其他影片時,能夠保持影片的播放是非常好的。像SoundCloud這樣的音訊網站也是如此,在那裡你可以在瀏覽和探索其他藝術家時繼續播放一首歌曲。所以......媒體網站,真的。
不過,一般來說,SPA作為一種行業趨勢或 "最佳實踐 "是錯誤的。
我們不斷地重新發明輪子
瀏覽器為你免費提供了大量的東西:直接內建,開箱即用。
SPA打破了這一切,並迫使你用JavaScript重新建立它。
大多數開發者都做錯了,而對於那些做對了的人來說,這導致了大量的額外程式碼來重新建立瀏覽器已經免費給你的功能。
在SPA中,當有人點選一個連結時,你需要...
- 確定該連結是指向當前網站還是一個外部位置。
- 如果是當前網站,則將URL路徑與內容相匹配。
- 如果是API驅動的內容,則透過fetch()請求獲得它。
- 更新URL路徑和瀏覽器歷史記錄,不觸發頁面過載。
- 將內容渲染到頁面上。
- 如果URL中有一個錨定連結,滾動到錨定元素。
- 將焦點轉移到文件的頂部,或錨定元素(大多數SPA都會犯這個錯誤)。
- 向螢幕閱讀器使用者宣佈頁面載入/內容改變(許多SPA也會犯這個錯誤)。
- 如果你正在執行的任何指令碼依賴於特定的DOM結構,或附著於特定的元素,請重新初始化它們。
你還需要檢測使用者何時點選瀏覽器的前進/後退按鈕,並重覆上述大部分步驟作為回應。
在傳統的MPA/網站上,幾乎所有這些東西都是由瀏覽器為你完成的。其中一些很容易。有些則是複雜而微妙的,或者容易出錯,或者容易忘記。所有這些都給你的網站增加了大量的程式碼。
結果是,我們建立的東西很脆弱,很容易損壞。我們得到了 "改進的使用者體驗",當所有的星星都完美地排列在一起時,我們就走上了這條路,而在一些邊緣情況下,使用者體驗會差很多很多。
SPA是一個錯誤。
明天,我將向你展示我們如何建立和SPA一樣效能的MPA,而且複雜性和脆弱性更低。
相關文章
- 幽默:為單頁應用SPA辯護
- vue 單頁應用(spa)前端路由實現原理Vue前端路由
- 原生JavaScript實現的SPA單頁應用(hash路由)JavaScript路由
- Vue SPA(單頁應用)首屏優化實踐Vue優化
- 關於單頁應用(SPA)的經驗之談
- 前端學習之路之SPA(單頁應用)設計原理前端
- 前端:將網站打造成單頁面應用SPA前端網站
- 使用Vue.js在WordPress中建立單頁面應用SPAVue.js
- 單頁應用SPA做SEO的一種清奇的方案
- 前端單頁應用SPA時代結束,Hotwire時機已到 - DHH前端
- (轉)前端:將網站打造成單頁面應用SPA前端網站
- 前端單頁應用微服務化解決方案2 - Single-SPA前端微服務
- 單頁面 Web 應用(Single Page Application,SPA)的工作原理介紹WebAPP
- 前端 SPA 單頁應用資料統計解決方案 (ReactJS / VueJS)前端ReactJSVue
- 前端SPA正過渡到MPA多頁應用 - nolanlawson前端
- SPA單頁面應用、前後端分離專案SEO優化的方法後端優化
- 監聽瀏覽器更新URL引數,實現偽SPA單頁面應用瀏覽器
- 分享一個 SPA 應用(React)的 SEO 方案React
- 單頁面應用和多頁面應用
- 基於 webpack 的 SPA 單頁 Web 應用 動態載入外掛的機制Web
- Webpack實戰-管理多個單頁應用Web
- SPA單應用-請求介面URL結構設計
- webpack4搭一個簡易SPA應用Web
- Vue 3是一個錯誤,我們不應該再犯。Vue
- nginx + 一個埠 部署多個單頁應用(history模式)Nginx模式
- 開發移動應用的7個致命錯誤
- vonic單頁面應用
- 如何快速開發SPA應用
- 單頁應用 - Token 驗證
- 構建單頁Web應用Web
- 單頁應用SEO淺談
- VUE 單頁面應用 修改頁面titleVue
- 放棄JavaFX是一個錯誤? - RedditJava
- SPA設計與架構-理解單頁面Web應用 (埃米頓.A斯科特) 中文pdf掃描版架構Web
- 前端:你要懂的單頁面應用和多頁面應用前端
- 【Azure 應用服務】App Service中,為Java應用配置自定義錯誤頁面,禁用DELETE, PUT方法APPJavadelete
- 微信單頁應用的那些事
- 使用 Vue + Flask 搭建單頁應用VueFlask