優(yōu)化對比 :
未優(yōu)化前:index.html引入一個main.js文件,體積2M以上。
優(yōu)化后入:index.html引入main.js、commons.js、charts.js、other.js。以達到將main.js平分目的。每個文件控制300k以內(nèi).(如果高興100k也沒問題)
用到的一堆庫及工具:
vue、webpack、babel、highcharts、echarts、jquery、html2canvas******此去省略若干m代碼
問題:
開發(fā)環(huán)境用webpack后發(fā)現(xiàn)單個js文件5m。
生產(chǎn)環(huán)境借助vue-cli的webpack配置,減少到2m。
解決方案:
搜索各種解決方案:require.ensure、require依賴、多entry、commonsChunkPlugin****此去省力若干方案
網(wǎng)絡(luò)類似下邊這種上解決方案太多了,但是都達不到預(yù)期效果
entry:{ main:'xxx.js', chunks:['c1', 'c2'], commons:['jquery', 'highcharts', 'echarts','d3', 'xxxxx.js'] } plugins:{ new commonsChunkPlugin({ name:'commons', minChunks:2 }) }
最優(yōu)解決方案:
entry:{ main:'xxx.js' } plugins:{ new commonsChunkPlugin({ name:'commons', minChunks:function(module){ // 下邊return參考的vue-cli配置 // any required modules inside node_modules are extracted to vendor return ( module.resource && /\.js$/.test(module.resource) && module.resource.indexOf( path.join(dirname, '../node_modules') ) === 0 ) } }) , // 以下才是關(guān)鍵 new commonsChunkPlugin({ name:'charts', chunks:['commons'] minChunks:function(module){ return ( module.resource && /\.js$/.test(module.resource) && module.resource.indexOf( path.join(dirname, '../node_modules') ) === 0 && ['jquery.js', 'highcharts.js','echarts'].indexOf( module.resource.substr(module.resource.lastIndexOf('/')+1).toLowerCase() ) != -1 ) } }) // 如果愿意,可以再new 一個commonsChunkPlugin }
相信看了本文案例你已經(jīng)掌握了方法,更多精彩請關(guān)注Gxl網(wǎng)其它相關(guān)文章!
推薦閱讀:
vue的select內(nèi)置組件使用步驟詳解
React使用時避免重渲染
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com