Vue項目使用CDN優化首屏加載

前言

做爲一個網站應用,加載速度是很是重要的。加載速度,一個是程序的合理安排,如以組件按需加載,一個是js、css等資源的異步加載。css

在Vue項目中,引入到工程中的全部js、css文件,編譯時都會被打包進vendor.js,瀏覽器在加載該文件以後才能開始顯示首屏。如果引入的庫衆多,那麼vendor.js文件體積將會至關的大,影響首開的體驗。html

解決方法是,將引用的外部js、css文件剝離開來,不編譯到vendor.js中,而是用資源的形式引用,這樣瀏覽器可使用多個線程異步將vendor.js、外部的js等加載下來,達到加速首開的目的。vue

外部的庫文件,可使用CDN資源,或者別的服務器資源等。webpack

下面,以引入vue、vuex、vue-router爲例,說明處理流程。web

1、資源引入

在index.html中,添加CDN資源,例如bootstrap上的資源:vue-router

<body>
    <div id="app"></div>

    <script src="https://cdn.bootcss.com/vue/2.5.2/vue.min.js"></script>
    <script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js"></script>
    <script src="https://cdn.bootcss.com/vuex/3.0.1/vuex.min.js"></script>
  </body>

2、添加配置

在bulid/webpack.base.conf.js文件中,增長externals,將引用的外部模塊導入,以下:vuex

module.exports = {
  entry: {
    app: './src/main.js'
  },
  externals:{
    'vue': 'Vue',
    'vue-router': 'VueRouter',
    'vuex':'Vuex'
  }

注意一點:npm

格式爲 'aaa' : 'bbb', 其中,aaa表示要引入的資源的名字,bbb表示該模塊提供給外部引用的名字,由對應的庫自定。例如,vue爲Vue,vue-router爲VueRouter.bootstrap

3、去掉原有的引用

去掉import,如:瀏覽器

// import Vue from 'vue'
// import Router from 'vue-router'

去掉Vue.use(XXX),如:

// Vue.use(Router)

測試

從新npm run build,會看到 vendor.js體積有所降低了。我自已的我的主頁中,將全部的外部模塊,使用CDN引入以後,vendor.js從1M,降爲30k左右。

經過開發者模式的Network工具,能夠看到vue.js、vuex.js、vendor.js等文件會分別由一個線程進行加載。且由於使用了CDN,減輕了帶寬壓力。

相關文章
相關標籤/搜索