vue.config.js中配置分包策略及常見的配置選項(xiàng)
前言
構(gòu)建大型 Vue.應(yīng)用時,代碼的體積逐漸增大,可能會影響應(yīng)用的性能和加載速度。為了優(yōu)化應(yīng)用的加載性能,Vue 提供了一種配置分包策略的方法,允許將代碼分割成更小的塊,按需加載,從而減小初始加載的大小。在本文中,我們將學(xué)習(xí)如何在 vue.config.js
文件中配置分包策略,以及一些常見的配置選項(xiàng)。
1、什么是代碼分包?
代碼分包是一種將應(yīng)用的代碼按照一定的規(guī)則和策略分割成不同的塊,然后在需要的時候進(jìn)行加載的方法。這可以幫助減小初始加載的文件大小,從而提高頁面加載速度。Vue 提供了一種配置分包策略的方式,允許您將不同模塊、庫以及異步加載的代碼分割成單獨(dú)的文件,從而更好地利用瀏覽器的緩存機(jī)制。
2、配置分包策略
在 Vue 項(xiàng)目中,可以通過修改 vue.config.js
文件來配置分包策略。以下是一個簡單的配置示例:
module.exports = { configureWebpack: { optimization: { splitChunks: { cacheGroups: { vendor: { test: /[\\/]node_modules[\\/]/, name: 'vendor', chunks: 'all', }, }, }, }, }, };
在上述示例中,我們使用了 splitChunks
選項(xiàng)來配置分包策略。cacheGroups
對象允許您定義不同的緩存組,每個組代表一個分包的規(guī)則。在這里,我們創(chuàng)建了一個名為 vendor
的緩存組,它會匹配 node_modules
下的模塊,并將它們打包成一個單獨(dú)的 vendor.js
文件。
3、分包配置選項(xiàng)
在配置分包策略時,有幾個常用的選項(xiàng)可以幫助您更好地控制分包行為:
test
: 用于匹配需要分割的模塊,可以使用正則表達(dá)式或函數(shù)。name
: 指定生成的分包文件的名稱,可以是字符串或函數(shù)。chunks
: 指定分包策略應(yīng)用于哪些塊,可以是'initial'
、'async'
、'all'
等。priority
: 指定緩存組的優(yōu)先級,數(shù)字越大優(yōu)先級越高。minSize
和maxSize
: 指定分包的大小范圍,超過或小于這個范圍的模塊會被分割。reuseExistingChunk
: 是否重用已有的分包,避免重復(fù)打包。
通過調(diào)整這些選項(xiàng),您可以根據(jù)實(shí)際需求來優(yōu)化分包策略,從而實(shí)現(xiàn)更好的加載性能。
4、分包示例一
本示例將echart組件進(jìn)行單獨(dú)分包。
module.exports = { configureWebpack: { optimization: { splitChunks: { cacheGroups: { // 將 echarts 單獨(dú)分包 echarts: { test: /[\\/]node_modules[\\/]echarts[\\/]/, name: 'echarts', chunks: 'all', priority: 30, }, // 默認(rèn)分包配置 default: { minChunks: 2, priority: -20, reuseExistingChunk: true, }, }, }, }, }, };
5、分包示例二
本示例將node_modules文件夾下的所有組件,根據(jù)大小進(jìn)行分包,maxSize超過300k的進(jìn)行分包,分包的大小不小于minSize設(shè)置100k。也就是超過300k進(jìn)行分包,小于100k的不進(jìn)行分包。
module.exports = { configureWebpack: { optimization: { splitChunks: { cacheGroups: { vendor: { test: /[\\/]node_modules[\\/]/, name(module) { // get the name. E.g. node_modules/packageName/not/this/part.js // or node_modules/packageName const packageName = module.context.match( /[\\/]node_modules[\\/](.*?)([\\/]|$)/ )[1]; // npm package names are URL-safe, but some servers don't like @ symbols return `npm.${packageName.replace("@", "")}`; }, chunks: "all", enforce: true, priority: 10, minSize: 100000, // 100KB maxSize: 300000, reuseExistingChunk: true, }, }, }, }, }, };
6、總結(jié)
Vue.js 提供了靈活的分包策略配置選項(xiàng),使得優(yōu)化應(yīng)用的加載性能變得更加簡單。通過合理地配置分包策略,您可以將代碼分割成更小的塊,從而加快頁面加載速度,提升用戶體驗(yàn)。在實(shí)際項(xiàng)目中,根據(jù)應(yīng)用的情況來調(diào)整分包策略,從而獲得最佳的性能和用戶體驗(yàn)。
附:在chainWebpack方法里的config配置方法
代碼:
module.exports = { chainWebpack: (config) => { config.output.filename('js/dong/[name].[chunkhash:8].js'); config.output.chunkFilename('js/xxx/[name].[chunkhash:4].js'); // 這里是css config.plugin('extract-css').tap(args => [{ filename: 'css/dd/[name].[contenthash:8].css', chunkFilename: 'css/xx/[name].[contenthash:8].css' }]); } }
到此這篇關(guān)于vue.config.js中配置分包策略及常見的配置選項(xiàng)的文章就介紹到這了,更多相關(guān)vue.config.js配置分包策略內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue中循環(huán)表格數(shù)據(jù)出現(xiàn)數(shù)據(jù)聯(lián)動現(xiàn)象(示例代碼)
在Vue中循環(huán)生成表格數(shù)據(jù)時,可能會遇到數(shù)據(jù)聯(lián)動的現(xiàn)象,即修改一個表格中的數(shù)據(jù)后,其他表格的數(shù)據(jù)也會跟著變化,這種現(xiàn)象通常是因?yàn)樗斜砀竦臄?shù)據(jù)引用了同一個對象或數(shù)組導(dǎo)致的,本文介紹vue中循環(huán)表格數(shù)據(jù)出現(xiàn)數(shù)據(jù)聯(lián)動現(xiàn)象,感興趣的朋友一起看看吧2024-11-11vue實(shí)現(xiàn)權(quán)限控制路由(vue-router 動態(tài)添加路由)
今天小編就為大家分享一篇vue實(shí)現(xiàn)權(quán)限控制路由(vue-router 動態(tài)添加路由),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11五種Vue實(shí)現(xiàn)加減乘除運(yùn)算的方法總結(jié)
這篇文章主要為大家詳細(xì)介紹了五種Vue實(shí)現(xiàn)加減乘除運(yùn)算的方法,文中的示例代碼簡潔易懂,對我們深入了解vue有一定的幫助,需要的可以了解下2023-08-08vue 百度地圖(vue-baidu-map)繪制方向箭頭折線實(shí)例代碼詳解
這篇文章主要介紹了vue 百度地圖(vue-baidu-map)繪制方向箭頭折線,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04