淺談vue加載優(yōu)化策略
vue.js是一個(gè)比較流行的前端框架,與react.js、angular.js相比來(lái)說(shuō),vue.js入手曲線更加流暢,不管掌握多少都可以快速上手。但是單頁(yè)面應(yīng)用也都有其弊病,有時(shí)候首屏加載慢的讓人捏舌。今天我們以vue cli3.x來(lái)說(shuō)一說(shuō)如何行之有效的緩解此問(wèn)題!
方法一 路由懶加載
首屏加載慢的原因無(wú)非就是單頁(yè)面應(yīng)用需要加載完整個(gè)路由表上的頁(yè)面,而路由懶加載就是來(lái)解決這個(gè)問(wèn)題的。如果我們能把不同路由對(duì)應(yīng)的組件分割成不同的代碼塊,然后當(dāng)路由被訪問(wèn)的時(shí)候才加載對(duì)應(yīng)組件,這樣就更加高效了。下面這個(gè)就是vue路由懶加載的一個(gè)具體例子。方法很簡(jiǎn)單,如果您不想深入了解,只需按照這個(gè)格式引入路由就可以了。如果您對(duì)路由懶加載感興趣,請(qǐng)移步vue-router路由懶加載

方法二 組件按需加載
為什么要按需加載組件呢?原因也很簡(jiǎn)單,一些組件庫(kù)包含豐富的組件,如果我們直接將其引入,不免會(huì)引入一些我們壓根用不到的組件。這樣打包起來(lái)體積會(huì)比較大,同樣顯得我們很不專(zhuān)業(yè)。因此按需引入就顯得很必要了。我們現(xiàn)在就拿iview組件庫(kù)為例,了解一下按需引入的流程。
1.首先引入按需加載工具 babel-plugin-import
babel-plugin-import是babel它會(huì)在編譯過(guò)程中將 import 的寫(xiě)法自動(dòng)轉(zhuǎn)換為按需引入的方式。
npm install babel-plugin-import --save-dev
2.在項(xiàng)目根目錄創(chuàng)建.babelrc文件并配置按需加載內(nèi)容
{
"plugins": [["import", {
"libraryName": "iview",
"libraryDirectory": "src/components"
}]]
}
3.在main.js配置項(xiàng)目需要加載的組件
下面是iview的一個(gè)例子

這里需要注意全局注冊(cè)的組件需要掛在到vue原型上,例如我們需要使用Notice組件,那我就需要
Vue.prototype.$Notice = Notice;
這樣我們就可以正常的使用iview的組件了。
方法三 使用CDN加速策略
在Vue項(xiàng)目中,引入到工程中的所有js、css文件,編譯時(shí)都會(huì)被打包進(jìn)vendor.js,那么vendor.js文件體積將會(huì)相當(dāng)?shù)拇?,影響首開(kāi)的體驗(yàn)。解決方法是,將引用的外部js、css文件剝離開(kāi)來(lái),不編譯到vendor.js中,而是用資源的形式引用,這樣瀏覽器可以使用多個(gè)線程異步將vendor.js、外部的js等加載下來(lái),達(dá)到加速首開(kāi)的目的。外部的庫(kù)文件,就可以使用CDN資源。vue cli3.x在配置cdn是和vue cli2.x有一些區(qū)別,vue cli在升級(jí)后,代碼結(jié)構(gòu)變化比較大,配置文件集成到了vue.config.js文件中。下面以amap、axios和qs為例講述如何使用cdn加載資源。
1.在index.html中引入相關(guān)cdn資源

2.配置externals
vue cli3.x 配置webpack是在vue.config.js的configureWebpack中

配置完之后,我們就可以正常使用全局的Amap、axios和Qs了
方法四 使用compression-webpack-plugin將文件打包成gzip格式
compression-webpack-plugin這個(gè)依賴(lài)在npm run build是會(huì)生成.gz文件。之后項(xiàng)目訪問(wèn)的文件就是這個(gè).gz文件,正常的項(xiàng)目打包體積會(huì)減少一半還要多,是不是很吊

下面我們來(lái)進(jìn)一步講述這個(gè)這個(gè)依賴(lài)的使用流程。
1.npm 引入
npm install compression-webpack-plugin --save-dev
2.vue cli3.x在 vue.config.js配置webpack

3.nginx開(kāi)啟gzip模式
在上一步前端就已經(jīng)配置好了,之后就是nginx配合開(kāi)啟gzip模式,這個(gè)比較簡(jiǎn)單,只要你對(duì)nginx有一點(diǎn)了解,我們?cè)趎ginx.conf中的http中配置一些代碼

4.驗(yàn)證是否配置成功
這步就很簡(jiǎn)單了只需要查看chunk類(lèi)文件的Response Headers的Content-Encoding是否是gzip即可

以上就是解決vue首屏加載慢的一些方法,希望文章能幫助大家解決問(wèn)題謝謝。也希望大家多多支持腳本之家。
相關(guān)文章
Vue實(shí)現(xiàn)讓頁(yè)面加載時(shí)請(qǐng)求后臺(tái)接口數(shù)據(jù)
這篇文章主要介紹了Vue實(shí)現(xiàn)讓頁(yè)面加載時(shí)請(qǐng)求后臺(tái)接口數(shù)據(jù)2022-08-08
解讀vue生成的文件目錄結(jié)構(gòu)及說(shuō)明
本篇文章主要介紹了解讀vue生成的文件目錄結(jié)構(gòu)及說(shuō)明,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
詳解windows下vue-cli及webpack 構(gòu)建網(wǎng)站(三)使用組件
本篇文章主要介紹了詳解windows下vue-cli及webpack 構(gòu)建網(wǎng)站(三)使用組件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
vue項(xiàng)目中如何實(shí)現(xiàn)網(wǎng)頁(yè)的截圖功能?(html2canvas)
這篇文章主要介紹了vue項(xiàng)目中如何實(shí)現(xiàn)網(wǎng)頁(yè)的截圖功能?(html2canvas),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
vue?require.context()的用法實(shí)例詳解
require.context是webpack提供的一個(gè)api,通常用于批量注冊(cè)組件,下面這篇文章主要給大家介紹了關(guān)于vue?require.context()用法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
Vue 使用 Mint UI 實(shí)現(xiàn)左滑刪除效果CellSwipe
這篇文章主要介紹了Vue 使用 Mint UI 實(shí)現(xiàn)左滑刪除效果CellSwipe,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-04-04
如何正確解決VuePress本地訪問(wèn)出現(xiàn)資源報(bào)錯(cuò)404的問(wèn)題
這篇文章主要介紹了如何正確解決VuePress本地訪問(wèn)出現(xiàn)資源報(bào)錯(cuò)404的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
使用vue3實(shí)現(xiàn)element-plus的主題切換效果
Vue3 Element Plus是一個(gè)基于Vue 3框架的UI組件庫(kù),它是由Element UI團(tuán)隊(duì)開(kāi)發(fā)的升級(jí)版本,Element Plus延續(xù)了Element UI簡(jiǎn)潔、高效的風(fēng)格,并引入了一些新的設(shè)計(jì)語(yǔ)言和技術(shù),如響應(yīng)式API和更好的性能優(yōu)化,本文給大家介紹了如何使用vue3實(shí)現(xiàn)element-plus的主題切換效果2024-12-12

