您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Vue如何通過懶加載提升頁面響應速度,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Vue具體輕量級框架、簡單易學、雙向數據綁定、組件化、數據和結構的分離、虛擬DOM、運行速度快等優勢,Vue中頁面使用的是局部刷新,不用每次跳轉頁面都要請求所有數據和dom,可以大大提升訪問速度和用戶體驗。
項目的目的是要通過數據透視表和Excel公式來分析公司的各項運營數據。不過在集成后,在開發環境頁面運行流暢,大量數據加載處理也很快。但是發布生產后,在用戶每次打開頁面時,加載時間上相較開發階段均有所降低,經過排查速度變慢是由于發布包的vendor.js變大所導致的,這個文件加載每次都需300毫秒左右,由于小的Vue項目并沒有做模塊劃分,所以所有的代碼都直接打包到了vendor中,在集成了新功能后,發布包也隨之變大了。
既然找到了原因,就開始著手優化,在前端對于需加載較大資源時,一般都采用懶加載的方式來優化效率。
懶加載也叫做延時加載,在網頁響應時不立刻請求資源,待頁面加載完畢或者按需響應時再加載資源,以達到提高頁面響應速度以及節省服務器資源的謎底。網頁中常用的懶加載是圖片的懶加載,對于類似淘寶一樣的多圖頁面,如果等待所有圖片都下載完成再響應用不必然造成頁面加載的卡頓。對于JS資源的加載也是同樣的道理,大JS的加載會造成JS阻塞,頁面出現停止響應的假死狀態。因此可以通過按需加載的方式,提高頁面首屏的加載速度。
總結了具體優化步驟,下面我們就開始著手優化吧!
首先是項目環境:Vue 2.6
開發環境:Vue-cli 4.5 + TypeScript 3.9
通過路由異步加載模塊,加速首屏以及其他頁面加載速度,在Vue Router中將webExcel模塊配置為懶加載模式,配置后webExcel組件會按照指定的webpackChunkName打包為單獨的文件,并在訪問webExcel路由的時候才會加載。這樣訪問home以及about頁面時并不會加載webExcel資源。
打包發布訪問頁面,首屏秒開,直接訪問about依舊秒開。可是查看網絡請求時候發現訪問首頁時請求了about和web Excel的資源。經過排查發現vue-cli在頁面中使用了preload和prefetch預加載機制,在不影響當前頁面加載的情況下預加載后續頁面需要的資源提升用戶體驗,這里為了演示清晰注釋掉prefetch的資源。
(臨時禁用prefetch預加載)
開啟路由懶加載后首頁并未加載about和webExcel。
(首頁Home網絡請求)
清理網絡請求記錄,點擊Web Excel,訪問webExcel頁面,此時會請求webExcel資源并展示組件。
(webExcel頁面網絡請求)
進一步優化使用插件頁面打開速度
優化了路由加載,為了提升用戶體驗,進一步優化webExcel頁面,開啟組件懶加載,當需要Designer組件的時候再加載。
開啟異步組件的方式類似于路由,直接配置import組件即可,替換原有的靜態import。
(組件懶加載)
這里我們一步到位使用AsyncComponent配置,這樣在加載組件(loading)時候可以給用戶一個提示。
(頁面模板)
(異步組件懶加載)
頁面上通過displayDesigner屬性控制Designer組件是否顯示,setTimeout 3秒后開始加載Designer組件并展示。LoadingComponent在加載時展示loading狀態。
可以從網絡請求中看到,webExcel加載完3秒后開始請求designer資源,請求時顯示LoadingComponent,請求完畢展示Desinger 組件。
為了進一步加速資源請求,可以開啟服務器gizp壓縮,目前大部分瀏覽器都支持gzip,可以開啟服務器的gzip功能,服務器在傳輸資源之前先進行壓縮。
網絡請求Request中會出現如下內容,就表示支持gzip
Accept-Encoding: gzip, deflate, br
Vue-cli可以在打包時就將資源提前進行gzip打包,這樣服務器直接返回打包后的資源不需要再次打包了。通過使用compression-webpack-plugin插件可以在打包時直接生成gz壓縮文件。關于gzip的配置可以根據具體部署情況設置。
關于“Vue如何通過懶加載提升頁面響應速度”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。