我們通常所說的單頁面應用程序通常通過前端框架(angular、react、vue)進行開發,單頁面應用程序將所有的活動局限於一個Web頁面中,僅在該Web頁面初始化時加載相應的HTML、JavaScript 和 CSS。一旦頁面加載完成了,SPA不會因為用戶的操作而進行頁面的重新加載或跳轉。取而代之的是利用 JavaScript 動態的變換HTML的內容,從而實現UI與用戶的交互。由於避免了頁面的重新加載,SPA 可以提供較為流暢的用戶體驗。
一、優點
1.良好的交互體驗
單頁應用的內容的改變不需要重新加載整個頁面,獲取數據也是通過Ajax異步獲取,沒有頁面之間的切換,就不會出現“白屏現象”,也不會出現假死並有“閃爍”現象,頁面顯示流暢,web應用更具響應性和更令人着迷。
2.良好的前后端工作分離模式
后端不再負責模板渲染、輸出頁面工作,后端API通用化,即同一套后端程序代碼,不用修改就可以用於Web界面、手機、平板等多種客戶端。
3.減輕服務器壓力
單頁應用相對服務器壓力小,服務器只用出數據就可以,不用管展示邏輯和頁面合成,吞吐能力會提高幾倍。
二、缺點
1.首屏加載慢
- 如果不對路由進行處理,在加載首頁的時候,就會將所有組件全部加載,並向服務器請求數據,這必將拖慢加載速度;
- 通過查看Network,發現整個網站加載試講長達10幾秒,加載時間最長的就是js、css文件和媒體文件及圖片
解決方案:
- Vue-router懶加載
Vue-router懶加載就是按需加載組件,只有當路由被訪問時才會加載對應的組件,而不是在加載首頁的時候就加載,項目越大,對首屏加載的速度提升得越明顯。
- 使用CDN加速
在做項目時,我們會用到很多庫,采用cdn加載可以加快加載速度。
- 異步加載組件
這里可以參考別人的介紹(https://segmentfault.com/a/1190000012138052)
- 服務端渲染
服務端渲染還能對seo優化起到作用,有利於搜索引擎抓取更多有用的信息(如果頁面純前端渲染,搜索引擎抓取到的就只是空頁面)
2.不利於SEO
seo 本質是一個服務器向另一個服務器發起請求,解析請求內容。但一般來說搜索引擎是不會去執行請求到的js的。也就是說,搜索引擎的基礎爬蟲的原理就是抓取url,然后獲取html源代碼並解析。 如果一個單頁應用,html在服務器端還沒有渲染部分數據數據,在瀏覽器才渲染出數據,即搜索引擎請求到的html是模型頁面而不是最終數據的渲染頁面。 這樣就很不利於內容被搜索引擎搜索到。
解決方案:
- 服務端渲染
服務器合成完整的 html 文件再輸出到瀏覽器
- 頁面預渲染
- 路由采用h5 history模式
3.不適合開發大型項目
大型項目中可能會涉及大量的DOM操作、復雜的動畫效果,也就不適合使用Vue、react框架進行開發。