手机版 收藏 导航

Vue.js 项目打包优化之路,从哪些方面入手

原创   www.link114.cn   2024-08-22 13:17:32

Vue.js 项目打包优化之路,从哪些方面入手

Vue.js 项目打包优化之路,从哪些方面入手

你是否曾经被繁琐复杂的打包过程折磨得焦头烂额?你是否曾经望着庞大的体积包望而生畏?是这样,那么这篇文章就是专门为量身定制的。

让一起来探讨一下如何把 Vue.js 项目打包优化到飞起!

让从代码分割开始。相信大家都听说过代码分割的好处,可以针对性地加载所需的资源,大大减少初始包的体积。但是,要如何配置呢?别担心,Vue CLI 已经帮做好这一步。只需要在 `vue.config.js` 中配置一下就可以:

```javascript

module.exports = {

chainWebpack: config => {

config.optimization.splitChunks({

chunks: 'all',

cacheGroups: {

vendors: {

name: 'chunk-vendors',

test: /[\\/]node_modules[\\/]/,

priority: -10,

chunks: 'initial'

},

common: {

name: 'chunk-common',

minChunks: 2,

priority: -20,

chunks: 'initial',

reuseExistingChunk: true

} } }) } } ```

接下来,来优化一下资源压缩。Vue CLI 默认开启 Gzip 压缩,这可以帮大大减小资源体积。但是,有时候还需要进一步优化。比如,可以启用 Brotli 压缩,这种压缩算法比 Gzip 效果更好。只需要在 `vue.config.js` 中加一行代码:

```javascript

module.exports = {

configureWebpack: {

plugins: [

new CompressionPlugin({

algorithm: 'brotliCompress'

}) ] } } ```

接下来要解决一个头疼的问题 —— 第三方库的优化。都知道,第三方库通常都很大,不做任何优化,打包出来的文件体积肯定很庞大。这里可以使用 `externals` 配置,将第三方库从打包中排除出去,改为通过 CDN 引入。

```javascript

module.exports = {

configureWebpack: {

externals: {

'vue': 'Vue',

'vuex': 'Vuex',

'vue-router': 'VueRouter'

} } } ```

来聊聊图片和字体的优化。这些资源通常都很大,不做处理,也会拖慢页面加载速度。这里可以使用 `image-webpack-loader` 和 `url-loader` 来压缩和转换图片,使用 `file-loader` 来处理字体文件。

```javascript

module.exports = {

chainWebpack: config => {

config.module

.rule('images')

.use('image-webpack-loader')

.loader('image-webpack-loader')

.options({

mozjpeg: {

progressive: true,

quality: 65

},

// optipng.enabled: false will disable optipng

optipng: {

enabled: false,

},

pngquant: {

quality: [0.65, 0.90],

speed: 4

},

gifsicle: {

interlaced: false,

},

// the webp option will enable WEBP

webp: {

quality: 75

} }) } } ```

通过以上几个步骤,相信你的 Vue.js 项目打包优化已经有了质的飞跃。不过,这还只是冰山一角,还可以做更多的优化,比如lazy-loading、Tree-shaking 等等。当然,这些就留给自己去探索,相信一定能打造出一个性能超群的 Vue.js 项目!