vue性能優(yōu)化便脊,通過(guò)webpack

1.路由懶加載

  1. 參考vue-router官方文檔

安裝@babel/plugin-syntax-dynamic-import插件
npm install --save-dev @babel/plugin-syntax-dynamic-import
babel.config.js里面聲明使用插件
"plugins": ["@babel/plugin-syntax-dynamic-import"]

  1. 使用路由懶加載方式寫(xiě)路由

{
path: '/home',
name: 'Home',
component: ()=>import(/* webpackChunkName: "homes" / "../views/Home.vue")
},
{
path: '/couponIndex',
name: 'couponIndex',
component:()=>import(/
webpackChunkName: "homes" / "../views/coupon/Index.vue")
},
{
path: '/cardbagIndex',
name: 'cardbagIndex',
component:()=>import(/
webpackChunkName: "others" */ "../views/cardbag/Index.vue")
}
webpackChunkName是分組,可以把需要一起加載的放一起,優(yōu)化加載速度
這樣就完成了路由懶加載拗慨,再次打包后舞竿,會(huì)把不同組件分割到不同的js文件里

頁(yè)面組件內(nèi)引入別的組件京景,也要使用懶加載寫(xiě)法
components: {
NavBar: () => import("../../components/NavBar.vue"),
CircleRate: () => import("../../components/CircleRate.vue")
}

2.externals配置

默認(rèn)情況下,依賴(lài)項(xiàng)的所有第三方包都會(huì)被打包到j(luò)s/chunk-vendors.******.js文件中骗奖,會(huì)導(dǎo)致該js文件過(guò)大确徙,加載速度很慢。
我們可以通過(guò)externals排除這些包执桌,使它們不被打包到j(luò)s/chunk-vendors.******.js文件中鄙皇,而是需要加載時(shí)去請(qǐng)求cdn資源。
vue.config.js里面配置configureWebpack仰挣,配置externals

module.exports = {
    productionSourceMap: false,  //不生成map文件
    configureWebpack: {
        externals: {
            'vue-lazyload': 'VueLazyload'
                        'axios': 'axios',
                        'dayjs': 'dayjs',
                        'crypto-js': 'CryptoJS',
                        'vue': 'Vue',
                        'vue-router': 'VueRouter',
                        'vuex': 'Vuex',
                        'element-ui': 'ELEMENT'
        }
    }
}

在public目錄index.html文件里面伴逸,引入需要的js文件
    <link rel="stylesheet" >
    <script src="https://s2.pstatp.com/cdn/expire-1-M/axios/0.21.1/axios.min.js"></script>
    <script src="https://lib.baomitu.com/dayjs/1.10.4/dayjs.min.js"></script>
    <script src="https://lib.baomitu.com/vue/2.6.12/vue.min.js"></script>
    <script src="https://lib.baomitu.com/vuex/3.6.2/vuex.min.js"></script>
    <script src="https://lib.baomitu.com/vue-router/3.5.1/vue-router.min.js"></script>
    <script src="https://lib.baomitu.com/crypto-js/4.0.0/crypto-js.min.js"></script>
    <script src="https://lib.baomitu.com/vue-lazyload/1.3.3/vue-lazyload.js"></script>
    <script src="https://lib.baomitu.com/element-ui/2.15.0/index.min.js"></script>

在main.js里刪除elementui引入相關(guān)代碼

另外那些ui框架引入的css和js,也放到這里來(lái)膘壶,elementui也是一樣的操作
<link rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/vant@2.9/lib/vant.min.js"></script>

這樣完成后错蝴,再次打包,js文件會(huì)大大變小颓芭,加載速度非常棒漱竖。

3.不生成map文件

productionSourceMap: false

4. 圖片懶加載,組件懶加載

使用vue-lazyload包,實(shí)現(xiàn)圖片資源懶加載畜伐,組件懶加載

import VueLazyload from 'vue-lazyload'
Vue.use(VueLazyload, {
  lazyComponent: true
})
//使用方式
<div class="img-list">
    <div v-for="(image, index) in imageList" :key="index">
        <img v-lazy="image" />
    </div>
</div>
//注意事項(xiàng)馍惹,需要給img固定寬高
.img-list {
        height: 70vh;
        overflow-y: auto;
        
        img {
            max-width: 7.2rem;
            height: 6rem;
        }
}
//再次打開(kāi)頁(yè)面,會(huì)發(fā)現(xiàn)玛界,隨著滾動(dòng)万矾,當(dāng)需要加載時(shí),才會(huì)加載圖片
//組件懶加載慎框,需要把組件放在<lazy-component>標(biāo)簽中間即可良狈。
<lazy-component>
    <CircleRate></CircleRate>
</lazy-component>
可以在組件mounted里面加入console語(yǔ)句,監(jiān)測(cè)懶加載是否成功笨枯。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末薪丁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子馅精,更是在濱河造成了極大的恐慌严嗜,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洲敢,死亡現(xiàn)場(chǎng)離奇詭異漫玄,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)睦优,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)渗常,“玉大人,你說(shuō)我怎么就攤上這事汗盘≈宓猓” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵隐孽,是天一觀(guān)的道長(zhǎng)尸执。 經(jīng)常有香客問(wèn)我,道長(zhǎng)缓醋,這世上最難降的妖魔是什么如失? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮送粱,結(jié)果婚禮上褪贵,老公的妹妹穿的比我還像新娘。我一直安慰自己抗俄,他們只是感情好脆丁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著动雹,像睡著了一般槽卫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上胰蝠,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天歼培,我揣著相機(jī)與錄音,去河邊找鬼茸塞。 笑死躲庄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的钾虐。 我是一名探鬼主播噪窘,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼效扫!你這毒婦竟也來(lái)了倔监?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤菌仁,失蹤者是張志新(化名)和其女友劉穎浩习,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體掘托,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瘦锹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了闪盔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弯院。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖泪掀,靈堂內(nèi)的尸體忽然破棺而出听绳,到底是詐尸還是另有隱情,我是刑警寧澤异赫,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布椅挣,位于F島的核電站,受9級(jí)特大地震影響塔拳,放射性物質(zhì)發(fā)生泄漏鼠证。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一靠抑、第九天 我趴在偏房一處隱蔽的房頂上張望量九。 院中可真熱鬧,春花似錦颂碧、人聲如沸荠列。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肌似。三九已至,卻和暖如春诉瓦,著一層夾襖步出監(jiān)牢的瞬間川队,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工睬澡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呼寸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓猴贰,卻偏偏與公主長(zhǎng)得像对雪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子米绕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容