VUE 前端項目優化方法


前端項目通過webpack打包會生成app.js和vendor.js,如果第三方組件依賴過多,會造成打包后的vendor.js過大,頁面首次加載的時候會出現白屏時間過長,影響用戶體驗。對此,我們需要通過下面的方法對前端項目進行優化,減小打包后生成的js大小,從而提高加載速度。下面以USM項目為例,進行優化:

一、公用靜態資源通過CDN加載

目前所有項目都通過npm包的形式引入vue、vue-router、axios、vuex、element-ui、ucar-view這些第三方包,webpack打包的時候會將這些資源打包到vendor.js中,我們可以將這些公用資源通過cdn引入到index.html中,可大大減小vendor.js的大小。


第一步:index.html中cdn引入靜態資源

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
    <meta name="renderer" content="webkit" />
    <link rel="shortcut icon" href="static/logo.ico" />
    <title>統一管理系統-神州優車集團協同辦公門戶</title>
    <!-- heade中引入公用css資源 -->
    <link rel="stylesheet" href="http://w3static.zuchecdn.com/upload/201901/1547542189993_element-ui.css" />
    <link rel="stylesheet" href="http://w3static.zuchecdn.com/upload/201901/1547548288099_ucar-view.css" />
  </head>
  <body>
    <div id="app"></div>
    <!-- body中引入公用js資源 -->
    <script src="http://w3static.zuchecdn.com/upload/201901/1547542004668_vue.min.js"></script>
    <script src="http://w3static.zuchecdn.com/upload/201901/1547542053516_axios.min.js"></script>
    <script src="http://w3static.zuchecdn.com/upload/201901/1547542073388_vue-router.min.js"></script>
    <script src="http://w3static.zuchecdn.com/upload/201901/1547542116839_element-ui.js"></script>
    <script src="http://w3static.zuchecdn.com/upload/201901/1547695026296_ucar-view.umd.min.js"></script>
    <script src="http://w3static.zuchecdn.com/upload/201901/1547542098031_vuex.min.js"></script>
    <script src="http://w3static.zuchecdn.com/upload/201901/1547542135730_es6-promise.auto.min.js"></script>
  </body>
</html>

第二步:webpack.base.conf.js中引入靜態資源

//放入module.exports中
externals: {
    vue: 'Vue',
    'vue-router': 'VueRouter',
    axios: 'axios',
    vuex: 'Vuex',
    'element-ui': 'ELEMENT',
    '@ucar/ucar-view': 'ucar-view'
  },

第三步:main.js中刪除element-ui、ucar-view的引用

  刪除import elementui from 'element-ui'

  刪除import ucarView from '@ucar/ucar-view'

  刪除Vue.use(elementui)

  刪除Vue.use(ucarView) 或者 Vue.use(Element, { size: 'small'})

  刪除import 'element-ui/lib/theme-chalk/index.css'

 

  增加Vue.prototype.$ELEMENT = { size: 'small'}

第四步:刪除項目依賴包

在項目package.json中刪除已經用cdn引入的包

刪除前:

刪除后:

這四步完成后,需從新啟動項目才能正常運行,npm run build打包后能明顯發現vendoe.js縮小很多

二、開啟gzip壓縮

config/index.js文件的productionGzip設置為true

然后安裝compression-webpack-plugin依賴

npm install --save-dev compression-webpack-plugin@1.1.11

注意:不能安裝最新的2.0版本,需webpack4.x版本支持,安裝時固定版本號即可

npm run build 打包后,app.js和vendor.js會生成gzip壓縮文件,app.js也從237k壓縮到42k

想讓瀏覽器加載頁面時加載gzip格式的壓縮文件,還需要在nginx服務器配置開啟gzip


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM