成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

怎么優(yōu)化Vue包的大小-創(chuàng)新互聯(lián)

怎么優(yōu)化Vue包的大???相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

成都做網(wǎng)站、成都網(wǎng)站建設(shè)的關(guān)注點(diǎn)不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒有做好網(wǎng)站,給創(chuàng)新互聯(lián)公司一個(gè)展示的機(jī)會(huì)來證明自己,這并不會(huì)花費(fèi)您太多時(shí)間,或許會(huì)給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗(yàn),一切以用戶為中心。
  1. 代碼混淆

  2. 資源放到 cdn,因?yàn)殚_發(fā)的時(shí)候圖省事,資源放在 assets 下面,直接 require 引入了,這也是一個(gè)大頭

  3. 無用庫刪除,功能相近的庫合并,只用到少部分功能的庫,看看能否自己實(shí)現(xiàn)

  4. gzip 壓縮

  5. 第三方庫也放到 cdn

1 - 3 三個(gè)優(yōu)化方案是首先想到的,然后網(wǎng)上搜了下 Vue 對(duì)應(yīng)的優(yōu)化策略,又增加了后面兩個(gè)
還有一些其他方案,比如路由懶加載,但是因?yàn)檫@個(gè)網(wǎng)站主要內(nèi)容都集中在首頁,所以這個(gè)就沒考慮了(好東西雖多,但因地制宜好)
所以一共定了 5 個(gè)優(yōu)化策略,下面就開干


四、執(zhí)行

1. 代碼混淆

代碼混淆就不多說了,一方面節(jié)省包大小,一方面還能增加一些反編譯的難度,直接網(wǎng)上搜了 Vue 混淆配置(畢竟要站在巨人肩膀上),試了下確實(shí)好使,配置如下


const CompressionWebpackPlugin = require('compression-webpack-plugin');
module.exports = {
 configureWebpack: (config) => {
  // 引入uglifyjs-webpack-plugin
  let UglifyPlugin = require('uglifyjs-webpack-plugin');

  if (process.env.NODE_ENV == 'production') {
   // 壓縮混淆
   config.mode = 'production'
   // 將每個(gè)依賴包打包成單獨(dú)的js文件
   let optimization = {
    minimizer: [new UglifyPlugin({
     uglifyOptions: {
      warnings: false,
      compress: {
       drop_console: true,
       drop_debugger: false,
       pure_funcs: ['console.log']
      }
     }
    })]
   }
   Object.assign(config, {
    optimization
   })
  } else {
   // 為開發(fā)環(huán)境修改配置
   config.mode = 'development'
}
  }
 }
}

2. 資源放到 cdn

這一步也容易做,資源全部都放到阿里云 oss 上,幾分鐘搞定


3. 無用庫刪除

這一步花了不少時(shí)間,因?yàn)殚_發(fā)的時(shí)候圖省事,很多庫直接 github 上一搜,yarn add 引入就完事了,現(xiàn)在需要細(xì)細(xì)的再拆分一下


在打包命令后面加 --report 看一下打包的狀態(tài)


yarn build --report

怎么優(yōu)化Vue包的大小

首先是去掉 ElementUi(gzip 壓縮后大約 158k),開發(fā)的時(shí)候 ElementUi 和 Vuetify 混用了,其實(shí)只留一個(gè) Vuetify 就夠了,然后對(duì)界面做一些小小的改造就完成了


然后是 lodash,只用到了其中幾個(gè)方法,但是他的整個(gè)體積不小,gzip 壓縮后大概 25k,于是找了 lodash 源碼,打算把用到的幾個(gè)方法抽出來,但是 lodash 代碼嵌套、引用太深了,不太抽,干脆直接干掉這個(gè)庫,找了幾個(gè)更純粹的實(shí)現(xiàn)做了替換,主要時(shí)間花在了讀 lodash 源碼上


再然后就是 vuescroll,在實(shí)現(xiàn)滾動(dòng)條樣式自定義的時(shí)候,偷懶直接用了這個(gè)庫,發(fā)現(xiàn)這個(gè)庫體積還是不小的,gzip 壓縮后將近 20k,直接干掉,自己寫一下樣式吧(這件事告訴我們,現(xiàn)在偷的懶,以后會(huì)以別的方式還回來的 0_0)
這樣就干掉了幾個(gè)大頭庫


4. gzip 壓縮

這個(gè)是網(wǎng)上找的解決方案,直接在 vue.config.js 里加點(diǎn)配置,然后 nginx 里也需要做一下對(duì)應(yīng)的配置


// vue.config.js
module.exports = {
 configureWebpack: (config) => {
  if (process.env.NODE_ENV == 'production') {
   // ...
   // gzip
   config.plugins.push(new CompressionWebpackPlugin({
    algorithm: 'gzip',
    test: /\.js$|\.html$|\.json$|\.css/,
    threshold: 10240,
    minRatio: 0.8
   }))
  }
  // ...
 }
}
// nginx 直接開啟下面的配置
gzip_static on;

這樣打包以后,會(huì)生成 .gz 文件,nginx 會(huì)自動(dòng)使用 .gz 文件


5. 第三方庫放到 cdn

這里主要是處理 Vuetify 這個(gè)庫,畢竟 gzip 以后也有將近 50k 的大小,放到 cdn 上會(huì)快一些
首先是打包配置中去掉 Vuetify


module.exports = {
 // ...
 configureWebpack: (config) => {
  if (process.env.NODE_ENV == 'production') {
   // 第三方庫不打包,使用 cdn
   config.externals = {
    vuetify: 'Vuetify'
   }
  } else {
   // 為開發(fā)環(huán)境修改配置
   config.mode = 'development'
   config.externals = {
    vuetify: 'Vuetify'
   }
  }
 }
}

然后在 index.html 里手動(dòng)加載 vuetify css 和 js


<link href="https://cdn.staticfile.org/vuetify/2.4.4/vuetify.min.css" rel="external nofollow" rel="stylesheet">
<script src="https://cdn.staticfile.org/vuetify/2.4.4/vuetify.min.js"></script>

這里其實(shí)有一些更好的方式,可以通過 webpack 參數(shù)傳給 index.html,通過 ejs 引入,現(xiàn)在比較簡(jiǎn)單,這里就沒做了


五、效果

通過上面幾個(gè)策略,最終包大小從 1.72 M 優(yōu)化到 94k

怎么優(yōu)化Vue包的大小

看完上述內(nèi)容,你們掌握怎么優(yōu)化Vue包的大小的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

新聞標(biāo)題:怎么優(yōu)化Vue包的大小-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://jinyejixie.com/article24/djsoce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、云服務(wù)器、關(guān)鍵詞優(yōu)化網(wǎng)站排名、App開發(fā)移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
南丹县| 克山县| 烟台市| 沙坪坝区| 慈利县| 海原县| 广安市| 邛崃市| 普安县| 富顺县| 海丰县| 法库县| 夹江县| 同江市| 子洲县| 廉江市| 托里县| 尼木县| 常山县| 荣昌县| 兴隆县| 常州市| 盐亭县| 威信县| 额尔古纳市| 区。| 友谊县| 泸水县| 林口县| 赤壁市| 锡林浩特市| 云霄县| 珠海市| 资中县| 浦城县| 阿拉善盟| 平和县| 吴江市| 岳阳市| 霞浦县| 师宗县|