vue 專案通過cdn載入庫減小bundle體積

2021-10-11 21:36:29 字數 1780 閱讀 3079

通常情況下通過vue cli建立的專案,webpack打包的時候會把vue, vuex, vue-router, axios等常用庫打包進去,這無疑會使打包後的體積變大。有沒有辦法不把這些依賴的庫檔案打包進去? 我們可以厲害webpack 的配置項externals 來進行配置,不讓把這些庫檔案打包進去,而是採用cdn方式來載入這些庫檔案。

先看一下這些庫檔案打包後的bundle檔案大小:

1)vue create  ***   

用vue cli 新建乙個vue 工程專案

3)npm run build 

編譯後,通過du -h  dist/js   檢視一下編譯出的包的大小

568k dist/js      我們看到有568k大小

下面我們通過webpack配置一下externals選項,不把vue庫打包進去,再來看看打包後的檔案大小:

1)在根目錄下新建乙個vue.config.js的檔案(因為用vue cli3 版本之後新建的工程專案預設是沒有vue.config.js配置檔案的)

const vueconfig = ,

configurewebpack: ,

},chainwebpack: config =>

};module.exports = vueconfig;

這是我們自己修改的webpack配置檔案,configurewebpack配置項中的externals欄位用來配置不從npm 引入庫的方式,而是採用從html以script方式引入庫。

上面的配置中我們只配置了vue從html 中以script方式引入。

2)在package.json中把vue的依賴刪除

"dependencies": ,
3)  在根目錄下的public/index.html檔案中引入vue

通過script 我們把vue載入了:    我們用的是cdn.bootcss.com 這個cdn提供商提供的vue。當然我們也可以用其他家的***提供商,例如:

如果不在這裡載入vue庫,執行npm run serve則會報錯

uncaught referenceerror: vue is not defined

你import vue from 'vue'的時候找不到vue了。

4)最後看看不打包vue 的bundle檔案大小    du -h dist/js

164k dist/js   

只有164k了。

如果我們有多個庫需要從cdn中載入則需要在/public/index.html模組中寫多個這樣的:

有沒有辦法寫成配置的方式? 當然有。做法如下:

1)修改vue.config.js 如下:

const cdn = 

const vueconfig = ,

configurewebpack: ,

},chainwebpack: config => )

}};module.exports = vueconfig;

2)修改/public/index.html配置檔案如下:

<% for (var i in

htmlwebpackplugin.options.cdn&&htmlwebpackplugin.options.cdn.js) %>

這樣我們就可以在vue.config.js中進行配置cdn要載入的庫了,而不用再修改/public/indext.html模板檔案了。

Vue專案使用CDN優化載入

在vue專案中,引入到工程中的所有js css檔案,編譯時都會被打包進vendor.js,瀏覽器在載入該檔案之後才能開始顯示首屏。若是引入的庫眾多,那麼vendor.js檔案體積將會相當的大,影響首開的體驗。解決方法是,將引用的外部js css檔案剝離開來,不編譯到vendor.js中,而是用資源的...

Vue專案使用CDN優化載入

在vue專案中,引入到工程中的所有js css檔案,編譯時都會被打包進vendor.js,瀏覽器在載入該檔案之後才能開始顯示首屏。若是引入的庫眾多,那麼vendor.js檔案體積將會相當的大,影響首開的體驗。解決方法是,將引用的外部js css檔案剝離開來,不編譯到vendor.js中,而是用資源的...

cdn載入vue很慢 vue專案 開啟優化之旅

vue專案打包後檔案總是很大,首先得確定到底是 導致了首屏渲染如此之慢?通過查一些資料,我們從以下幾個方面去優化 開啟gzip壓縮功能 引入cdn 路由懶載入 某些第三方元件按需載入而不是全部載入 較小的資源用base64嵌入src中,減少http請求 gzip壓縮 這個是需要後端配合設定的,首先我...