溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Vue-Cli項(xiàng)目?jī)?yōu)化操作的實(shí)現(xiàn)

發(fā)布時(shí)間:2021-06-03 17:05:06 來源:億速云 閱讀:155 作者:Leah 欄目:web開發(fā)

這篇文章給大家介紹Vue-Cli項(xiàng)目?jī)?yōu)化操作的實(shí)現(xiàn),內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

路由懶加載

在Vue-router官方文檔中有針對(duì)懶加載的介紹,主要是將整個(gè)大的js進(jìn)行切片,對(duì)當(dāng)前路由的資源進(jìn)行一個(gè)按需加載。在Vue-cli生成的路由組件引用方法是這樣的

import HelloWorld from '@/components/HelloWorld'

只需將組件的引用方式改為

const HelloWorld = () =>
  import ('@/components/HelloWorld')

然后重新編譯即可

開啟預(yù)加載/優(yōu)先加載

使用webpack插件 PreloadWebpackPlugin 進(jìn)行預(yù)加載prefetch和優(yōu)先加載preload。 主要做的是用preload加載vendor、manifest與app三個(gè)js而用prefetch去加載所有路由對(duì)應(yīng)的文件。 首先要 安裝插件

npm install --save preload-webpack-plugin

在 webpack.prod.conf.js 中修改,加入預(yù)加載的代碼 (注意放在 new HtmlWebpackPlugin() 的下面)

new PreloadWebpackPlugin({
 rel: 'prefetch',
}),
new PreloadWebpackPlugin({
 rel: 'preload',
 as(entry) {
  if (/\.css$/.test(entry)) return 'style'
  return 'script';
 },
 include: ['app', 'vendor', 'manifest']
})

開啟GZip

gzip,使用gzip壓縮資源可以更快地加載資源??蛻舳薶ttp請(qǐng)求頭聲明瀏覽器支持的壓縮方式,服務(wù)端配置啟用壓縮,壓縮的文件類型,壓縮方式。當(dāng)客戶端請(qǐng)求到服務(wù)端的時(shí)候,服務(wù)器解析請(qǐng)求頭,如果客戶端支持gzip壓縮,響應(yīng)時(shí)對(duì)請(qǐng)求的資源進(jìn)行壓縮并返回給客戶端,瀏覽器按照自己的方式解析,在http響應(yīng)頭,我們可以看到 content-encoding:gzip ,這是指服務(wù)端使用了gzip的壓縮方式。

啟用gzip,在nginx的site-conf中開啟gzip

server {
  gzip on;
  gzip_types    text/xml text/css text/plain text/javascript application/javascript application/x-javascript;
}

webpack處理,需要先安裝插件

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

然后在config的index.js中 ,將productionGzip改為true,開啟Gzip壓縮。

PS:如果編譯報(bào)錯(cuò),則安裝 compression-webpack-plugin@1.1.12 版本

對(duì)第三方工具庫進(jìn)行額外處理

本項(xiàng)目中Vender中主要是Vue,Vue-router,axios等固定依賴的代碼,工具庫的代碼一般不會(huì)改動(dòng),所以可以將這些工具庫的代碼抽出來,單獨(dú)走CDN加載以減少編譯JS文件的大小。 具體操作 : 選擇相應(yīng)的工具庫版本的cdn,加入到index.html中

<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>

之后去到webpack中修改相應(yīng)的打包配置

externals: {
 'vue': 'Vue',
 'vue-router': 'VueRouter',
 'vuex': 'Vuex',
 'axios': 'axios'
}

關(guān)于Vue-Cli項(xiàng)目?jī)?yōu)化操作的實(shí)現(xiàn)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI