vue-cli3 打包優(yōu)化

1、設置路由懶加載


import?Vue?from?'vue'

import?Router?from?'vue-router'

Vue.use(Router)

const?index=?r?=>?require.ensure([],?()?=>?r(require('@/views/index')),?'index');

export?default?new?Router({

? ???mode:?'history',

? ? ? ?routes:[

? ? ? ? ? ? {

? ? ? ? ? ? ? ? path: ' ',

? ? ? ? ? ? ? ? component: index

????????????}

? ? ? ? ]

})


2、在index.html中放入引用的公共包(如vue,vuex,elementui。。。)

<!DOCTYPE?html>

<html>

<head>

? ?? <meta?charset="utf-8">

? ?? <meta?http-equiv="X-UA-Compatible"?content="IE=edge">

? ?? <meta?name="viewport"?content="width=device-width,initial-scale=1.0">

? ?? <link?rel="icon"?href="<%=?BASE_URL?%>favicon.ico">

? ?? <title>Signal?Supervisor</title>

</head>

<body>

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

? ?? <script type="text/javascript" src="<%= BASE_URL %>js/vue.min.js"></script>

? ?? <script type="text/javascript" src="<%= BASE_URL %>js/vuex.min.js"></script>

</body>

</html>

3、開啟GZIP

當項目較大時往往會出現(xiàn)打包之后首屏加載時間較長,這樣會導致用戶體驗較差,因此可以開啟gzip壓縮功能

1)如果是vue2.x,在vue項目中安裝依賴并將config.js中的productionGzip改為true,開啟Gzip壓縮,npm install --save-dev compression-webpack-plugin

運行npm run build 打包項目,這時如果有提示報錯ValidationError: Compression Plugin Invalid Options,則需要將build中的webpack.prod.conf.js中CompressionWebpackPlugin的設置由asset改為

filename,如圖所示

再次運行npm run build打包,如果還有報錯,提示TypeError: Cannot readproperty 'emit' of undefined。據(jù)我查證,是安裝的compression-webpack-plugin依賴有問題,需要卸載compression-webpack-plugin更改安裝低版本:npm install --save-dev compression-webpack-plugin@1.1.2

最后再次打包

當發(fā)現(xiàn)打包文件中有很多.gz的文件時即是打包成功,最后后端服務器開啟gzip配置就愉快的配置完成,再次打開地址后會發(fā)現(xiàn)首屏速度快了很多

2)? 如果是vue-cli3的項目,在開啟gzip時會稍有區(qū)別,在vue.config.js 中配置,先安裝依賴cnpm?i?-D compression-webpack-plugin

const CompressionPlugin = require('compression-webpack-plugin');

configureWebpack: config => {

? ?? if (process.env.NODE_ENV === 'production') {

? ?????? return{

? ?????????? plugins: [

? ?????????????? new CompressionPlugin({

? ??????????????????????algorithm: 'gzip',//開啟gzip

? ? ? ? ? ? ? ? ? ? ?????test: /\.js$|\.html$|.\css/, // 匹配文件名

? ?????????????????????? threshold: 10240, // 對超過10k的數(shù)據(jù)壓縮

? ???????????????????????deleteOriginalAssets: false // 不刪除源文件

? ? ? ? ? ? ? ? ? ? })

? ?????????????? ]

? ? ? ? ? ? ?? }

? ?????????? }

? ?? }?

? ??

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容