您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)怎么在vue-cli項目中縮短首屏加載時間,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
安裝
npm install --save-dev webpack-bundle-analyzer
在webpack中設(shè)置如下,然后npm run dev
的時候默認會在8888端口顯示。
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; module.exports = { plugins: [ new BundleAnalyzerPlugin() ] }
JS文件按需加載
如果沒有這個設(shè)置,項目首屏加載時會加載整個網(wǎng)站所有的JS文件,所以將JS文件拆開,點擊某個頁面時再加載該頁面的JS是一個很好的優(yōu)化方法。
這里用到的就是vue的組件懶加載。在router.js中,不要使用import的方法引入組件,使用require.ensure。
import index from '@/components/index' const index = r => require.ensure( [], () => r (require('@/components/index'),'index')) //如果寫了第二個參數(shù),就打包到該`/JS/index` 的文件中。 //不寫第二個參數(shù),就直接打包在`/JS` 目錄下。 const index = r => require.ensure( [], () => r (require('@/components/index')))
使用cdn
打包時,把vue、vuex、vue-router、axios等,換用國內(nèi)的bootcdn 直接引入到根目錄的index.html中。
在webpack設(shè)置中添加externals,忽略不需要打包的庫。
externals: { 'vue': 'Vue', 'vue-router': 'VueRouter', 'vuex': 'Vuex', 'axios': 'axios' }
在index.html中使用cdn引入。
<script src="//cdn.bootcss.com/vue/2.2.5/vue.min.js"></script> <script src="//cdn.bootcss.com/vue-router/2.3.0/vue-router.min.js"></script> <script src="//cdn.bootcss.com/vuex/2.2.1/vuex.min.js"></script> <script src="//cdn.bootcss.com/axios/0.15.3/axios.min.js"></script>
將JS文件放在body的最后
默認情況下,build后的index.html中,js的引入是在header中。
使用html-webpack-plugin插件,將inject的值改成body。就可以將js引入放到body最后。
var HtmlWebpackPlugin = require('html-webpack-plugin'); new HtmlWebpackPlugin({ inject: 'body', })
壓縮代碼并移除console
使用UglifyJsPlugin 插件來壓縮代碼和移除console。
new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false, drop_console: true, pure_funcs: ['console.log'] }, sourceMap: false })
關(guān)于怎么在vue-cli項目中縮短首屏加載時間就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。